原文: http://www.itzhai.com/java-based-notebook-java-exceptions-in-the-exception-custom-exception.html
public class Exception extends Throwable
Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
public class RuntimeException extends Exception
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。
1、异常的分类:
① 非运行时异常(Checked Exception)
Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常
② 运行时异常(Runtime Exception/Unchecked Exception)
a) RuntimeException类直接继承自Exception类,称为运行时异常。Java中所有的运行时异常都直接或间接的继承自RuntimeException.
Java中所有的异常类都直接或间接的继承自Exception。
2、异常的处理:
对应非运行时异常,必须对其进行处理。处理方式有两种:
使用try…catch…finally语句块进行捕获
在产生异常的方法所在的方法声明throws Exception
在产生异常的方法所在的方法声明throws Exception
对于运行时异常,可以不对其进行处理,也可以对其进行处理。一般情况下都不对其进行处理。
3、捕获异常:
try { FileInputStream fs = new FileInputStream("D:/temp/a.txt"); } catch (FileNotFoundException e) { System.out.println("catch..."); e.printStackTrace(); } finally{ System.out.println("finally..."); }
4、抛出和捕获异常:
4.1、把异常交给JVM处理:
public class ExceptionTest { public static void execute() throws Exception { System.out.println("execute..."); throw new Exception(); } public static void main(String[] args) throws Exception { execute(); } }
4.2、或者使用try catch语句块捕获异常:
public class ExceptionTest { public static void execute() throws Exception { System.out.println("execute..."); throw new Exception(); } public static void main(String[] args) { try { execute(); } catch (Exception e1) { e1.printStackTrace(); } } }
5、自定义异常:
自定义异常通常是定义一个继承自Exception类的子类。一般情况下我们都会直接继承自Exception类,而不会继承某个运行时的异常类。
5.1、创建自定义异常:
public class MyException extends Exception{ public MyException(){ super(); } public MyException(String msg){ super(msg); } }
5.2、在类中使用异常:
public class ExceptionTest { public static void execute(String a) throws MyException { System.out.println("execute..."); if("true".equals(a)){ throw new MyException("参数不能为 true"); } } }
5.3、捕获自定义异常:
public static void main(String[] args) throws MyException { execute("true"); }
6、异常使用注意事项:
当使用多个catch语句块来捕获异常时,需要将父类的catch语句块放到子类型的catch块之后,这样才能保证后续的catch可能被执行,否则子类型的catch将永远无法到达,Java编译器会报编译错误。
如果try语句块中存在return语句,那么首先会执行finally语句块中的代码,然后才返回。
如果try语句块中存在System.exit(0)语句,那么久不会执行finally语句块的代码了,因为System.exit(0)会终止当前运行的JVM。程序在JVM终止前结束执行。
相关推荐
Exception JAVA 自定义异常 Exception JAVA 自定义异常 Exception
Java自定义异常处理详细介绍,包括了很多比较经典的案例,可以自己研究自定义异常
自定义异常 try-catch-finally try-with-resource Java异常常见面试题 1. Error 和 Exception 区别是什么? 2. 运行时异常和一般异常(受检异常)区别是什么? 3. JVM 是如何处理异常的? 4. throw 和 throws 的区别是...
1)首先创建自定义异常类,语法格式:自定义异常类名 extends Exception。 2)在方法中通过关键字throw抛出异常对象。 3)若是在当前抛出异常的方法中处理异常,可以用try-catch语句捕获并处理;若不是,...
自定义异常类MyException,该类继承自Exception类,类中只有含一个字符串参数msg的构造方法,构造方法中只有一条语句super(msg)——调用父类的构造方法。另外,编写自定义类person,类中只有两个私有的变量,一个是...
主要给大家介绍了关于Java如何自定义异常打印非堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
异常中的方法覆盖 1. 自定义异常 1.1 定义方式 ① 必须继承自Exception或Exception的子类,常用RuntimeException ② 必须提供无参构造方法; ③ 必须提供String message的1参构造方法,super(message); 备注:受查...
1:异常的分类以及区别 2:自定义异常的实现 3:自定义异常的处理 4:异常的妙用
Java异常处理的几个Example代码,让我们了解异常类型、声明异常、抛出和捕获异常、从异常获取信息、创建自定义异常等内容。
创建自定义异常 Create Custom Exception1---马克-to-win java视频
创建自定义异常 Create Custom Exception3---马克-to-win java视频
- Java允许开发者扩展`java.lang.Exception`或其子类来自定义异常,以便根据业务需求抛出特定类型的异常,并在catch块中针对这些自定义异常进行个性化的捕获和处理。例如,在`CustomExceptionDemo`示例中创建了一个...
介绍Java程序中的异常概念,包括异常抛出、捕获和处理,自定义异常
* @see java.lang.Exception * @since jdk 1.5 */ public class ExceptionManager extends RuntimeException { private static final long serialVersionUID = -6963187366089365790L; /** * This field ...
在Java中,异常(Exception)是一种特殊的对象,表示程序运行过程中出现的问题。Java提供了很多内置的异常类,例如NullPointerException、IndexOutOfBoundsException等。此外,程序员也可以创建自定义的异常类。 ...
帮助大家复习java基础知识其中有 hashCode 2 toString 2 finalize 2 用已学知识做出简单的房屋出租系统 3 类方法使用注意事项和细节讨论 4 main()方法 4 ...异常-Exception 21 编译异常 22 异常处理 2
自定义异常类 语法错误, 运行期错误, 逻辑错误 语法错误: 没有遵循语法规则导致的错误。 运行期错误: 程序运行时,运行环境发现一个不可能执行的操作。 逻辑错误: 程序没有按照预期的方案执行。 异常(Exception) ...
7.2 异常与异常类 7.2.1 Java异常体系结构 Java中的异常有很多类型,包括在Java API中已经被定义的异常(也称系统异常)和用户自定义异常。所有的异常类都直接或间接继承了Throwable类。Throwable类是Object类的...
import java.util.*; class MyException extends Exception{ String message; MyException(int age){ message=age+"年龄异常"; } public String getMessage(){ return message; } } class People{ ...