Mọi người ở đây nên biết 'hoặc' statemens, thường dán mắt vào một die() lệnh:PHP: 'hoặc' tuyên bố về hướng dẫn thất bại: làm thế nào để ném một ngoại lệ mới?
$foo = bar() or die('Error: bar function return false.');
Các hầu hết các lần chúng ta thấy một cái gì đó như:
mysql_query('SELECT ...') or die('Error in during the query');
Tuy nhiên, tôi không thể hiểu chính xác câu lệnh 'hoặc' đó hoạt động như thế nào.
Tôi muốn ném một ngoại lệ mới thay vì chết(), nhưng:
try{
$foo = bar() or throw new Exception('We have a problem here');
doesnt làm việc, và không phải
$foo = bar() or function(){ throw new Exception('We have a problem here'); }
Cách duy nhất tôi tìm thấy để làm điều đó là khủng khiếp này nghĩ:
function ThrowMe($mess, $code){
throw new Exception($mess, $code);
}
try{
$foo = bar() or ThrowMe('We have a problem in here', 666);
}catch(Exception $e){
echo $e->getMessage();
}
Nhưng có cách nào để ném ngoại lệ mới trực tiếp sau câu lệnh 'hoặc'?
Hoặc loại cấu trúc này là bắt buộc (tôi không liek chức năng ThrowMe tại tất cả):
try{
$foo = bar();
if(!$foo){
throw new Exception('We have a problem in here');
}
}catch(Exception $e){
echo $e->getMessage();
}
Sửa: những gì tôi muốn thực sự là để tránh việc sử dụng một if() kiểm tra tất cả các tiềm năng hoạt động nguy hiểm tôi làm, ví dụ:
#The echo $e->getMessage(); is just an example, in real life this have no sense!
try{
$foo = bar();
if(!$foo){
throw new Exception('Problems with bar()');
}
$aa = bb($foo);
if(!$aa){
throw new Exception('Problems with bb()');
}
//...and so on!
}catch(Exception $e){
echo $e->getMessage();
}
#But i relly prefer to use something like:
try{
$foo = bar() or throw new Exception('Problems with bar()');
$aa = bb($foo) or throw new Exception('Problems with bb()');
//...and so on!
}catch(Exception $e){
echo $e->getMessage();
}
#Actually, the only way i figured out is:
try{
$foo = bar() or throw new ThrowMe('Problems with bar()', 1);
$aa = bb($foo) or throw new ThrowMe('Problems with bb()', 2);
//...and so on!
}catch(Exception $e){
echo $e->getMessage();
}
#But i'll love to thro the exception directly instead of trick it with ThrowMe function.
Ý của bạn là '! $ Foo' trong khối mã cuối cùng? –
Xin lỗi, có .. xấu của tôi – Strae