一 Java常见的异常类之间的继承关系
1 从图中可以看出,Java把所有非正常情况分成两种:异常(Exception)和错误(Error),它们都继承Throwable父类。
2 Err错误,一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此应用程序不应该使用catch块来捕获Error对象。在定义该方法时,也无须在其throws子句中声明该方法可能抛出Error及任何子类。
二 异常捕获示例1
1 代码示例
public class DivTest { public static void main(String[] args) { try { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int c = a / b; System.out.println("您输入的两个数相除的结果是:" + c ); } catch (IndexOutOfBoundsException ie) { System.out.println("数组越界:运行程序时输入的参数个数不够"); } catch (NumberFormatException ne) { System.out.println("数字格式异常:程序只能接受整数参数"); } catch (ArithmeticException ae) { System.out.println("算术异常"); } catch (Exception e) { System.out.println("未知异常"); } } }
2 运行结果
E:\test\Java\Java8\ExceptionTEST\src>java 8 1
错误: 找不到或无法加载主类 8
E:\test\Java\Java8\ExceptionTEST\src>java DivTest 8 1
您输入的两个数相除的结果是:8
E:\test\Java\Java8\ExceptionTEST\src>java DivTest 8 1 3
您输入的两个数相除的结果是:8
E:\test\Java\Java8\ExceptionTEST\src>java DivTest 8
数组越界:运行程序时输入的参数个数不够
E:\test\Java\Java8\ExceptionTEST\src>java DivTest 8 d
数字格式异常:程序只能接受整数参数
E:\test\Java\Java8\ExceptionTEST\src>java DivTest 8 0
算术异常
3 结果分析
上面程序针对3种类型的异常,提供了专门的异常处理逻辑。
三 NullPointerException异常
1 代码示例
import java.util.*; public class NullTest { public static void main(String[] args) { Date d = null; try { System.out.println(d.after(new Date())); } catch (NullPointerException ne) { System.out.println("空指针异常"); } catch(Exception e) { System.out.println("未知异常"); } } }
2 运行结果
空指针异常
3 结果分析
上面程序针对NullPointerException异常提供了专门的异常处理块。上面的程序调用一个null对象的after方法,这将引发NullPointerException异常,Java运行时将会调用NullPointerException对应的catch块来处理该异常。
四 异常捕获顺序问题
1 代码示例
try { System.out.println(d.after(new Date())); } catch(Exception e) { System.out.println("未知异常"); } catch (NullPointerException ne) { System.out.println("空指针异常"); }
2 结果分析
上面代码编译无法通过,因为将大异常放在了小异常的前面,应该放在后面。
3 小结
异常捕获时,一定要记住先捕获小异常,再捕获大异常。
相关推荐
在Java中,异常是通过类的实例来表示的,这些类都继承自`java.lang.Throwable`类,它是所有异常和错误的根类。异常分为两种主要类型:Error和Exception。 1. **Error**: - `Error`类是所有错误的基类,通常表示...
Java常见工具类及异常处理 在 Java 编程中,异常处理是一个非常重要的概念。异常是指在程序执行过程中出现的非正常情况,可能会导致程序终止或崩溃。Java 提供了一个完善的异常处理机制,允许开发者捕获和处理异常...
异常在Java中表现为类的形式,它们继承自`Throwable`类。`Error`类及其子类表示严重的问题,如`VirtualMachineError`和`OutOfMemoryError`。而`Exception`类及其子类则包含了一般程序运行时可能遇到的错误,如`...
Java提供了丰富的异常类来表示不同类型的错误,其中就包括与时间相关的异常。本文将深入探讨Java中的时间异常类及其在处理时间问题时的重要性。 在Java中,时间处理主要涉及到`java.util.Date`、`java.time`包...
12. **java.lang.AbstractMethodError**: 当实现接口或继承抽象类的类尝试调用一个未实现的抽象方法时抛出。确保实现了所有必需的抽象方法。 13. **java.lang.AssertionError**: 在调试过程中,用于表示断言失败。...
- **异常优先级**:在捕获异常时,应遵循异常的继承关系。例如,在上述示例中,`MySecondException`类继承自`Throwable`,而`MyFirstException`继承自`Exception`。因此,如果希望同时捕获这两种类型的异常,应该先...
这份资源"Java常见笔试、面试题目深度剖析"显然是为了帮助求职者更好地准备相关考试而设计的。以下将对Java笔试和面试的一些核心知识点进行详细的阐述: 1. **基础语法**:Java的基础包括变量、数据类型、运算符、...
自定义异常类需要继承自`Exception`类或者其子类,例如`RuntimeException`。创建一个自定义异常类,你可以包含构造函数、属性和方法,以满足项目需求。下面是一个简单的自定义异常类的例子: ```java public class ...
本文档提供了 Java 异常处理的基本概念、关键字、异常类继承关系、异常处理的出口、多重 catch 块、异常抛出和捕捉等知识点,并提供了 best practice 和常见问题的解答,旨在帮助读者更好地理解和掌握 Java 异常处理...
预定义的异常类如`Exception`和`RuntimeException`覆盖了大多数常见错误情况。然而,在实际项目中,可能会遇到一些独特的、特定于业务的异常情况。例如,年龄为负数或成绩为负数等。为了更清晰地标识这些特定错误,...
在Java中,有一系列内置的常见异常类,例如: 1. NullPointerException:当试图访问或操作一个null对象引用时抛出,提醒开发者对象引用应该在使用前初始化。 2. ArrayIndexOutOfBoundsException:当试图访问数组中...
Java标准库提供了一系列内置异常类,如`IOException`, `NullPointerException`, `ArrayIndexOutOfBoundsException`等,覆盖了常见的错误情况。 6. 异常方法: 异常对象提供了诸如`getMessage()`和`...
这些异常是直接或间接继承自`java.lang.Exception`类的。而用户自定义异常则是程序员根据具体业务需求创建的异常类,它们通常继承自`Exception`类或其子类,以便在程序中捕获和处理特定的逻辑错误。 异常的抛出有两...
运行时异常(RuntimeException)包括那些由程序错误引起的异常,它们继承自`java.lang.RuntimeException`类。常见的运行时异常有: - `ArithmeticException`(算术异常):比如除以零的时候; - `...
在本节"Java常见笔试、面试系列深度剖析第3讲"中,我们将深入探讨Java编程语言的一些关键概念和常见问题,这些内容对于准备Java相关的笔试和面试至关重要。讲解由张龙和风中叶两位专家主讲,他们将分享丰富的经验与...
Java 异常和多线程的关系: * 异常可以在多线程中出现 * 多线程可以用来处理异常 Java 异常和多线程的重要性: * 异常可以影响程序的健壮性和安全 * 多线程可以提高程序的执行效率和响应速度 Java 异常和多线程...
新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。 3. 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实...
Java中的异常类继承自`Throwable`类,主要分为两类: - `Error`类:表示严重问题,如JVM系统错误或资源耗尽,通常不应被捕获或处理。 - `Exception`类:更常见,用于表示应用程序中可预见的异常情况。`Exception`类...
在`DBConnection.java`文件中,可能涉及到对数据库连接对象的处理,Java 8引入了Optional类,可以更好地处理null值,避免空指针异常。例如: ```java Optional<Connection> optionalConn = Optional.ofNullable...