我想在php中将数组作为异常而不是字符串.如果你定义自己的扩展Exception类的类,是否可以这样做?
例如 throw new CustomException('string', $options = array('params'));
妖异问题,如这一次,我在找换行jQuery的$.阿贾克斯()方法,这样我可以在一个位置,它就会按照所有应用程序的远程调用自动使用提供错误处理.
简单的方法是简单地创建一个新名称,类似于$ .get()和$ .post()如何实现$ .ajax()的外观.但是,我希望重用名称$ .ajax(),以便我们可以使用标准的jQuery语法保留其余的代码,从中隐藏我们添加了自己的错误处理的事实.这是实际的和/或好的实现,或者可能是一个可怕的想法?
编辑:到目前为止的响应表明.ajaxError()是要走的路.我知道这会捕获400和500级错误,但有没有办法(使用此事件处理程序或其他方式)捕获302重定向?我正在尝试处理重定向到登录页面的响应,但我们希望在它是XHR请求时拦截该重定向,允许用户取消操作而不是强制它们自动转发.
我经常需要抛出一个自定义(错误)错误.就像由于参数不匹配而无法找到资源时.
我更喜欢抛出现有错误,或抛出从现有错误继承的错误.这样,我不会引入已经定义的错误类,并且可以完美地使用(DRY).但它也允许保持措辞和风格相同,通过继承和简单地改变一两个字来澄清与原始错误的差异.
例如:
Foo.new
Foo.some_external_id = nil
Foo.fetch_external_resource
# => InvalidOptions: Calling Foo#fetch_external_resource with nil is invalid
Run Code Online (Sandbox Code Playgroud)
我很确定已经定义了这样的错误.事实上,在通过多行代码阅读后,我发现我的MongoID驱动程序已经存在Mongoid::Errors::InvalidOptions: Calling Document#find with nil is invalid.
Ruby Core和Ruby on Rails中是否有可用的错误类列表?有没有办法为您当前的项目获得这样的列表?
重新使用和/或继承现有错误是否很聪明,或者我应该维护自己的自定义设置?
我想创建一个异常处理程序,它将拦截我项目中的所有控制器.这可能吗?看起来我必须在每个控制器中放置一个处理程序方法.谢谢你的帮助.我有一个发送Json响应的弹簧控制器.因此,如果发生异常,我想发送一个可以从一个地方控制的错误响应.
所以我有一个即将到来的任务处理异常并在我当前的地址簿程序中使用它们,大多数功课都集中在这里.我决定玩异常和整个尝试捕获的东西,并使用类设计,这是我最终将在几周内完成我的任务.我有工作代码检查异常就好了,但我想知道的是,是否有办法标准化我的错误消息功能,(即我的what()调用):
这是我的代码:
#include <iostream>
#include <exception>
using namespace std;
class testException: public exception
{
public:
virtual const char* what() const throw() // my call to the std exception class function (doesn't nessasarily have to be virtual).
{
return "You can't divide by zero! Error code number 0, restarting the calculator..."; // my error message
}
void noZero();
}myex; //<-this is just a lazy way to create an object
int main()
{
void noZero();
int a, b;
cout << endl;
cout …Run Code Online (Sandbox Code Playgroud) 我正在寻找为我Exceptions目前正在进行的项目实现自己的一套.该项目依赖于具有基本框架异常的核心框架MyFrameworkException(我也在编写此框架).
对于任何给定的项目,我想抛出几种不同的类型,Exceptions我无法决定使用多个子类或单个子类与某种形式的Enum构造函数参数.
在这两种情况下我都有:
public class MyFrameworkException extends Exception { /*...*/ }
Run Code Online (Sandbox Code Playgroud)
选项1:
public class MyProjectBaseException extends MyFrameworkException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
Run Code Online (Sandbox Code Playgroud)
然后,在整个项目中,我会针对发生的任何问题抛出特定的异常.
选项2:
public class MyProjectException extends MyFrameworkException {
public static enum Type {
SpecificType1, SpecificType2, SpecificType3
}
public MyProjectException( Type type ) { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)
MyProjectException对于发生的任何问题,我总是会抛出特定的枚举类型.我提供了一些机制,以便可以 …
在引发异常时是否可以创建自定义条件?请考虑以下示例:
BEGIN
y := x / 0;
EXCEPTION
WHEN division_by_zero THEN
RAISE NOTICE 'caught division_by_zero';
RETURN x;
END;
Run Code Online (Sandbox Code Playgroud)
在这里,我使用'division_by_zero'条件来捕获异常.我想做的是这样的事情:
BEGIN
[...]
RAISE custom_condition;
EXCEPTION
WHEN custom_condition THEN
[...]
END;
Run Code Online (Sandbox Code Playgroud)
这样我就不会干扰可能的标准异常.我可以做y:= 1/0; 并抓住division_by_zero,但它看起来并不正确.
postgresql exception-handling exception custom-exceptions conditional-statements
以下代码抛出RuntimeError: maximum recursion depth exceeded while getting the str of an object.我可以用两种不同的方式解决无限递归,但我不明白为什么每种修复都有效,因此不知道使用哪种,或者两种方法是否正确.
class FileError( Exception ):
def __init__( self, filename=None, *a, **k ):
#Fix 1: remove super
super( FileError, self ).__init__( self, *a, **k )
self.filename = filename
def __repr__( self ):
return "<{0} ({1})>".format( self.__class__.__name__, self.filename )
#Fix 2: explicitly define __str__
#__str__ = __repr__
print( FileError( "abc" ) )
Run Code Online (Sandbox Code Playgroud)
如果我删除super,代码运行但不打印任何东西.这没有意义,因为根据这篇文章,Python中的__str__和__repr__之间的区别,省略__str__将调用,__repr__但这似乎不会发生在这里.
相反,如果我继续调用super并添加__str__ = __repr__,那么我得到预期的输出并且没有递归.
有人可以解释为什么无限递归存在,为什么每次更改都会解决inifinte递归,以及为什么一个修复可能比另一个更优先?
我正在研究Python的内置异常,并想知道Java最接近的UnsupportedOperationException是什么.NotImplementedError很接近但似乎暗示了一些略有不同的东西.我应该使用RuntimeError还是实施自己的Exception?
因此,我创建了一个自定义异常,我想以两种不同的方式调用它(if/else 语句和 try/ except 语句)。这是自定义异常:
class CustomException(Exception):
def __init__(self, value=None, *args, **kwargs):
self.parameter = value
for key, value in kwargs.items():
setattr(self, key, value)
for key, value in self.__dict__.items():
print "%s => %s" % ( key, value )
def __str__(self):
return repr(self.parameter)
Run Code Online (Sandbox Code Playgroud)
这是我想要实现自定义异常的方式:
try:
if something:
#make an error
;lsdfj
else:
raise CustomException('this is my custom message', file='somefile.txt', var2='something')
except Exception, e:
raise CustomException(e)
Run Code Online (Sandbox Code Playgroud)
我认为我的问题有两个:
NameError1:当块中抛出的标准时try/except(由于;lsdfj),我想传递CustomExceptions一些额外的参数,例如“文件”,就像if/else实现一样;我该怎么做呢?
2:当引发自定义异常时(由于 if/else 语句为 false),CustomExceptions 类最终会被调用两次,因为我在 if/else …
python error-handling if-statement exception custom-exceptions
exception ×5
python ×3
java ×2
ajax ×1
c++ ×1
if-statement ×1
interceptor ×1
jquery ×1
php ×1
postgresql ×1
recursion ×1
repr ×1
spring ×1
spring-mvc ×1