簡體   English   中英

PHP中的異常處理

[英]Exception handling in php

我有這種情況:

Interface ClassInterface 
{
  public function getContext();
}

Class A implements ClassInterface 
{
  public function getContext()
  {
     return 'CONTEXTA';
  }

  //Called in controller class
  public function Amethod1() 
  {
    try {
       //assuming that Helper is a property of this class
        $this->helper->helperMethod($this);
     } catch(Exception $ex) {
       throw $ex;
     }
  }
}

Class B implements ClassInterface 
{
  public function getContext()
  {
     return 'CONTEXTB';
  }

  //Called in controller class
  public function Bmethod1() 
  {
     try {
       //assuming that Helper is a property of this class
        $this->helper->helperMethod($this);
     } catch(Exception $ex) {
       throw $ex;
     }
  }

}

Class Helper {
 public function helperMethod(ClassInterface $interface) 
 {
   try {
      $this->verifyContext($interface->getContext());
      //dosomething
   } catch(\Exception $ex) {
     throw $ex;
   }

 }

 private function verifyContext($context) {
    if (condition1) {
       throw new \UnexpectedValueException('Invalid context.');
    }

    return true;
 }

}

我希望我的調用Amethod1和Bmethod1的控制器類知道在該過程中引發的異常類型。 是否建議像提出異常一樣拋出異常? 您認為在這種情況下, throw-catch-throw-catch-throw結構是否合理?

是的,完全合理。 但是:您的特定示例可以簡化為:

public function Amethod1() 
{
   try {
      //assuming that Helper is a property of this class
      $this->helper->helperMethod($this);
   } catch(Exception $ex) {
      throw $ex;
   }
}

至:

public function Amethod1() 
{

    //assuming that Helper is a property of this class
    $this->helper->helperMethod($this);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM