在故意抛出异常时,我总是只使用PHP的基本异常类,只是带有不同的消息,例如:
<?php
if($a < $b){
throw new Exception('a is smaller than b');
}elseif($a > $b){
throw new Exception('a is larger than b');
}
然而,最近我注意到,有些人抛出了不同类别的异常,例如:
<?php
if($a < $b){
throw new aIsSmallerThanBException();
}elseif($a &g
我承认我不经常使用异常,有时我很难在PHP中100%地掌握它们,这可能部分是因为PHP没有最好的错误=>异常支持,但我对它们知之甚少。
以下面的代码为例,它定义了4个不同的类,除了扩展一个基异常类之外,什么都不做。我只是好奇为什么不直接调用一个异常,为什么他们有这么多不同的类。
我想有一个很好的理由吧?
class OptimizeImageException extends Exception {};
class FileNotFoundException extends OptimizeImageException {};
class FileNotImageException
在Ruby中,我想为一个特定的异常做一些特殊的事情,但还不足以有一个特定的救援。在救援中检查特定异常的正确语法是什么?
示例(非工作)代码:
begin
c = d
rescue => ex
if ex == NameError
puts 'NameError'
else
puts ex.message
end
end
我只是对python异常的语法感到好奇,因为我似乎无法理解什么时候可以使用下面的语法来捕获异常。
try:
"""
Code that can raise an exception...
"""
except Exception as e:
pass
和
try:
"""
Code that can raise an exception...
"""
except Exception, e:
pass
有什么关系?
Java7提供了一种在一个catch块中捕获多个异常的新方法,如下所示。
try
{
//stuff that causes one or more of the exceptions below.
}
catch (IOException | IllegalArgumentException | IndexOutOfRangeException ex)
{
//one of the above exceptions was thrown and caught
//this code block will run if any of the above exceptio
我想了解一些关于捕捉异常的知识。
如果我不希望我的应用程序在异常发生时崩溃,并且不知道会抛出什么异常,那么我在代码中处理异常的方法如下:
public static void main(String[] args) {
try {
// all my code to new StarGAte with a lot of threads and classes
} catch (Exception e){
//Something went wrong (kill the dev!)
}
}
在我的代码中,try/catch块是否存在性能问题?是否有更好的方法来处理
我有一个PHP函数,它调用一个PL/SQL包,该包可以抛出许多已知的异常(即用户异常),我可以在PHP中捕获这些异常并对其执行操作。问题是,尽管在PHP中捕获了异常,但我在PHP日志文件中收到了一条警告,其中包含来自PL/SQL异常的堆栈跟踪:
PHP Warning: oci_execute(): ORA-20001: Something isn't valid
ORA-234565: at "MY.PACKAGE", line 234
ORA-923485: at "MY.PACKAGE", line 123
我如何抑制这些保监处的警告?我不想隐藏
我使用Zend_Db_Table来管理我的MySQL连接。它们工作得很好,但只有一个巨大的安全问题。
如果出现错误,比如MySQL关闭,ZF会抛出一个异常,显示db连接用户名和密码。
例如,我在配置中设置了错误的db密码。这是抛出的异常。
exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)' in /Users/claudiocani
比方说,我有一个函数可以抛出3种类型的异常-- e1、e2和e3。因此,在这个函数中有两种处理异常的方法。哪种方法更好,为什么?例子:-
public void func() {
block1 starts
block1 ends
e1 can thrown from block1
block2 starts
block2 ends
e2 can thrown from block2
block3 starts
block3 ends
e3 can thrown from block3
}
所以,现在我可以用两种方式处理异常:-