javascript效仿java提供了异常机制,鼓励用异常来代替c时代的返回值判断,虽然javascript的throw语句可以后跟任何类型的表达式,但是规范情况下最好还是抛出Error以及Error子类的实例,自定义异常在javascript中利用原型链来模拟继承Error实现。
java的自定义异常类:
class CustomException extends Exception {
CustomException(String msg) {
super(msg);
}
}
那么理论上对应javascript的实现:
function CustomException() {
Error.apply(this,arguments);
}
function t(){}
t.prototype=Error.prototype;
CustomException.prototype=new t();
CustomException.prototype.name="CustomException";
CustomException.prototype.constructor=CustomException;
但是如果使用的话:
try{
throw new CustomException("test");
} catch(e){
if(e instanceof CustomException) {
alert(e.message);
}
}
会发现 message 属性并没有被设置到自定义异常实例上去,和java不同即Error构造器没有对当前实例进行初始化操作,参考 ecma规范:
When Error is called as a function rather than as a constructor, it creates and initialises a new Error object.
推测 Error 实现可能如下:
//返回native实例
function Error(msg){
//不等价 instanceof ,没有对应 js 操作
if(this 完全是 Error 实例 ) {
this.message=msg;
}
else
return new Error(msg)
}
Error.prototype=....
故和一般的继承模拟不一样:
function CustomException() {
var e=Error.apply(this,arguments);
//不等,this 对于 native Error函数不管用
console.log(e==this);
}
new CustomException("xx");
e !== this,所以这里 Error构造器的调用在自定义异常中就变的毫无意义,只能自己手动设置 message :
function CustomException(msg) {
//无意义
//Error.apply(this,arguments);
this.message=msg;
}
PS1:native Error 实例在各个浏览期间差异比较大,可执行console.dir(new Error("x"));测试,但是标准只有message和name两个属性。
PS2:对于其它内置类型(Array,Date ...)似乎也存在以上问题.
分享到:
相关推荐
Dubbo 提供了强大的异常处理机制,使得服务提供者能够向消费者传递自定义异常,从而帮助消费者更好地理解和处理服务调用中的错误情况。本文将深入探讨如何在 Dubbo 中捕获自定义异常,以及相关的最佳实践。 1. **...
这时,我们就需要创建自定义异常来细化错误信息,以便更精确地表达和处理问题。本篇将深入探讨如何在C#中自定义异常以及其应用。 首先,自定义异常通常是通过继承`System.Exception`类或其派生类来实现的。`...
自定义异常是Java异常处理的一部分,允许我们创建符合特定业务需求的异常类。下面我们将深入探讨Java自定义异常及其应用。 首先,自定义异常通常是通过扩展Java内置的`Exception`类或其子类来实现的。`Exception`类...
如果这个组件支持异常处理,那么开发者可能会在自定义异常上下文中使用它,例如,当用户在界面上输入无效数据时抛出自定义异常。 总结来说,自定义异常是软件开发中的重要实践,它允许我们定制错误处理策略,使代码...
自定义异常不仅有助于提高代码的可读性和可维护性,还能帮助开发者更精确地定位问题,因为它们通常与特定的业务逻辑或功能紧密相关。通过创建自定义异常,可以为程序添加一层额外的控制和灵活性,使得错误处理更加...
Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE...
自定义异常是Java中的一种高级技巧,允许开发者创建符合特定应用需求的异常类。下面将详细解释如何在Java中自定义异常,并通过源代码实例进行说明。 一、自定义异常的必要性 在标准库中,Java已经提供了一套丰富的...
### 异常类:自定义异常类 #### 知识点概述 在程序设计中,异常处理是一项重要的机制,用于管理程序运行时可能发生的错误或意外情况。Java 提供了一套完整的异常处理机制,其中包括标准异常类以及允许开发人员...
在实际的Java开发项目中,自定义异常是提高代码可读性和可维护性的重要手段。异常处理是程序设计的关键部分,它有助于捕获并处理在程序执行过程中可能出现的错误或异常情况。Java提供了丰富的异常处理机制,包括预...
ORACLE 用户自定义异常小例子 1.进入pl/sql测试窗口 2.执行语句 declare empname varchar2(255); customize_exp EXCEPTION; –自定义异常 begin FOR c IN (select d.* from scott.dept d) ...
本文将基于给定的文件信息,深入解析“自定义异常类步骤”这一主题,涵盖异常处理的基本概念、自定义异常类的设计与实现,以及如何在实际代码中应用这些自定义异常。 ### 异常处理概述 异常处理是一种编程机制,...
Java自定义异常处理详细介绍,包括了很多比较经典的案例,可以自己研究自定义异常
23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java...
### Java自定义异常类详解 #### 一、Java异常体系概览 在Java语言中,异常处理机制是一种用于处理程序运行时错误的重要机制。Java中的异常处理基于`java.lang.Throwable`类,它有两个重要的子类:`Exception`和`...
自定义异常是Java异常处理的一部分,它允许我们根据特定的业务需求创建自己的异常类。下面将详细介绍如何在Java中定义和使用自定义异常。 首先,让我们了解Java异常的基本概念。Java中的异常是一种事件,它在程序...
无论是预定义异常还是自定义异常,都能够帮助开发者更好地控制程序流,确保即使在遇到错误情况下也能优雅地处理问题,从而提高整个系统的稳定性。 #### 六、扩展阅读 - [Oracle官方文档 - PL/SQL异常处理]...
Java提供了丰富的内置异常类,但有时候,我们可能需要根据特定的需求创建自定义异常。这就是“JAVA 自定义异常 Exception”所涉及的内容。 自定义异常是在Java中通过继承`java.lang.Throwable`或其子类(如`...
### 如何创建和使用自定义异常 在Java编程语言中,异常处理机制是十分重要的一个组成部分,它能够帮助开发者有效地捕获并处理程序运行时出现的错误情况。自定义异常则是这一机制的重要扩展,允许开发者根据特定的...
Spring中,使用切面全局捕获异常的同时,进行自定义异常抛出捕获,方便代码书写。
### JAVA自定义异常类 #### 一、基本概念与应用场景 在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的各种错误情况。Java提供了丰富的内置异常类,但有时候,内置的异常类可能不足以精确地...