开发者

unexpected T_TRY, expecting T_FUNCTION error message, not sure why?

开发者 https://www.devze.com 2022-12-24 12:33 出处:网络
I am getting unexpected T_TRY, expecting T_FUNCTION error message and am not sure as too why am getting that, can\'t we use try and catch block inside class like this:

I am getting unexpected T_TRY, expecting T_FUNCTION error message and am not sure as too why am getting that, can't we use try and catch block inside class like this:

class Processor
{

    protected $dao;

    protected $fin;

    try
    {
        public function __construct($file)
        {
   开发者_JAVA技巧         //Open File for parsing.
            $this->fin = fopen($file,'w+') or die('Cannot open file');
            // Initialize the Repository DAO.
            $this->dao = new Dao('some name');
        }

        public function initiateInserts()
        {
            while (($data=fgetcsv($this->fin,5000,";"))!==FALSE)
            {
                $initiate_inserts = $this->dao->initiateInserts($data);
            }
        }
        public function initiateCUpdates()
        {
            while (($data=fgetcsv($this->fin,5000,";"))!==FALSE)
            {
                $initiate_updates = $this->dao->initiateCUpdates($data);
            }
        }
        public function initiateExecuteIUpdates()
        {
            while (($data=fgetcsv($this->fin,5000,";"))!==FALSE)
            {
                $initiate_updates = $this->dao->initiateIUpdates($data);
            }
        }
    }
    catch (Exception $e)
    {
    }
}


You can't put all your method definitions into one try-catch block.

Instead of

class Foo {
  try {
    public function func1() { }
    public function func2() { }
  }
  catch(Exception $e) {
  }
}

you have to use

class Foo {
  public function func1() {
    try {
      ...
    }
    catch(Exception $e) {
      ...
    }
  }

  public function func2() {
    try {
      ...
    }
    catch(Exception $e) {
      ...
    }
  }

}


Don't try-catch inside of each method, you could simply try-catch when you use your class:

try {
    $p = new Processor($file);
    $p->initiateInserts();
    $p->initiateCUpdates();
    // and so on...
} catch (Exception $e) {
    // handle the error...
}

This way your class will be much cleaner and you can decide what to do with errors. Especially if you use your class in multiple places - you can have customized error handling for each case.


You can't have any "do this stuff"-code in a class outside of a method. There is nothing to "try to do" inside those curly brackets, because the stuff inside is just method definitions.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号