Java基础之006-异常

简介: Java基础之006-异常                                       35岁学习Java 1.1 异常的体系throwable     --Error         通常出现重大问题如:运行的类不存在或者内存溢出等。

Java基础之006-异常

                                       35岁学习Java

 

1.1 异常的体系

throwable

     --Error

         通常出现重大问题如:运行的类不存在或者内存溢出等。
        不编写针对代码对其处理

   --Exception

        在运行时运行出现的一起情况,可以通过try catch finally

 

1.2 Exception和Error的子类名都是以父类名作为后缀。

         Java在设计异常体系时,将容易出现的情况都封装成了对象。


1.3 Throwable中的方法

1)      getMessage()

获取异常信息,返回字符串。

2)      toString()

获取异常类名和异常信息,返回字符串。

3)      printStackTrace()

获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。

4)      printStackTrace(PrintStream s)

通常用该方法将异常内容保存在日志文件中,以便查阅。

 

1.4 throws和throw

1)     throws用于标识函数暴露出的异常。

2)     throw用于抛出异常对象。

3)     throws与throw的区别:

thorws用在函数上,后面跟异常类名。

throw用在函数内,后面跟异常对象。

     说明:定义功能方法时,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在函数上标识。

在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

 

1.5 异常处理

try

{

         需要检测的代码;

}

catch(异常类 变量)

{

         异常处理代码;

}

finally

{

         一定会执行的代码;     

}

Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。

 

处理过程:

         中检测到异常会将异常对象传递给catch,catch捕获到异常进行处理。

         Finally里通常用来关闭资源。比如:数据库资源,IO资源等。

         需要注意:try是一个独立的代码块,在其中定义的变量只在该变量块中有效。

         如果在try以外继续使用,需要在try建立引用。在try对其进行初始化。IO,Socket就会遇到。

 

1.6 自定义异常

1)     自定义类继承Exception或者其子类。

2)     通过构造函数定义异常信息。

例:

Class DemoException extendsException

{

         DemoException(Stringmessage)

         {

              super(message);

         }

}

3)     通过throw将自定义异常抛出。

 

1.7 异常细节

1)     RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。

2)     一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。

3)     如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常。

4)     简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集。

注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,就只能try.

相关文章
|
15天前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
|
15天前
|
Java
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
|
16天前
|
IDE 前端开发 Java
怎样避免 Java 中的 NoSuchFieldError 异常
在Java中避免NoSuchFieldError异常的关键在于确保类路径下没有不同版本的类文件冲突,避免反射时使用不存在的字段,以及确保所有依赖库版本兼容。编译和运行时使用的类版本应保持一致。
|
17天前
|
Java 编译器
如何避免在 Java 中出现 NoSuchElementException 异常
在Java中,`NoSuchElementException`通常发生在使用迭代器、枚举或流等遍历集合时,尝试访问不存在的元素。为了避免该异常,可以在访问前检查是否有下一个元素(如使用`hasNext()`方法),或者使用`Optional`类处理可能为空的情况。正确管理集合边界和条件判断是关键。
|
20天前
|
Java
Java异常捕捉处理和错误处理
Java异常捕捉处理和错误处理
15 1
|
22天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
42 2
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
81 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
28天前
|
Java
如何在 Java 中处理“Broken Pipe”异常
在Java中处理“Broken Pipe”异常,通常发生在网络通信中,如Socket编程时。该异常表示写入操作的另一端已关闭连接。解决方法包括:检查网络连接、设置超时、使用try-catch捕获异常并进行重试或关闭资源。
|
1月前
|
存储 安全 Java
如何避免 Java 中的“ArrayStoreException”异常
在Java中,ArrayStoreException异常通常发生在尝试将不兼容的对象存储到泛型数组中时。为了避免这种异常,确保在操作数组时遵循以下几点:1. 使用泛型确保类型安全;2. 避免生类型(raw types)的使用;3. 在添加元素前进行类型检查。通过这些方法,可以有效防止 ArrayStoreException 的发生。
|
2月前
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
36 2