备案成功后怎么建设网站,五台建设局网站,网站设计培训班前台,开发网站公司收费目录 异常概念ErrorException 体系图常见运行时异常NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundExceptionClassCastExceptionNumberFormatException 常见的编译异常异常处理机制自定义异常throw和throws对比 异常是Java编程中的常见问题#xff0c;了解如何… 目录 异常概念ErrorException 体系图常见运行时异常NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundExceptionClassCastExceptionNumberFormatException 常见的编译异常异常处理机制自定义异常throw和throws对比 异常是Java编程中的常见问题了解如何处理异常至关重要。本文将介绍Java中异常的基本概念以及如何捕获和处理它们以构建健壮的应用程序。
异常
异常是在程序运行过程中发生的错误或意外情况它可以中断正常的程序流程并引发错误处理机制。
Code
// 尝试执行可能引发异常的代码
public void divide(){int num110;int nums20; int result num1 / num2; // 10/0 直接抛出异常
}但是在真实的业务中如果因为一个异常导致整个程序无法继续进行说明这个程序的健壮性很差
为了保证程序能够进行可以使用trye-catch异常处理机制来解决
Code
public void divide(){try {int num110;int nums20; int result num1 / num2; // 10/0 直接抛出异常} catch (ArithmeticException e) {// 捕捉并处理异常System.err.println(发生了算术异常 e.getMessage());} // 无论是否发生异常都会执行的代码块System.out.println(程序执行结束);
}如果进程异常处理那么即使程序出现了异常程序也可以继续进行。
概念
将程序执行中发生不正常的情况成为“异常”开发过程中出现的语法错误等不是异常
在执行过程中所发生的异常可以分为两大类
Error
Jvm无法解决的严重问题如
JVM系统内部出现错误、资源消耗StackOverFlow栈溢出、OOMout of memory等严重错误
Exception
Exception可以分为
运行时异常程序运行过程中发生异常空指针、读取不到文件等编程时异常编译器检测出来的异常
体系图 常见运行时异常
NullPointerException
空指针异常通常在尝试访问或操作尚未初始化或已设置为**null**的对象时发生。
Code
String myString null;
System.out.println(myString.length()); // 这将引发NullPointerExceptionArithmeticException
算数异常它在进行算术运算例如除以零产生无效结果时发生。
Code
int result 5 / 0; // 这将引发ArithmeticException算术异常这段代码中尝试5除以0从数学上来说是未定义计算公式因此会引发ArithmeticException异常。
ArrayIndexOutOfBoundException
数组索引越界异常通常在访问数组中不存在的索引位置而抛出。
Code
int nums{1,2,3,4};
int valuenums[10]; 数组nums有5个元素索引范围是0~4但是我们试图访问索引10的元素这个索引超出了数组的最大范围
因此抛出ArrayIndexOutOfBoundException异常。
ClassCastException
类型转换异常通常在一种类型转为不兼容的类型时抛出。
Code
class Animal {// ...
}class Dog extends Animal {// ...
}class Cat extends Animal {// ...
}public class Main {public static void main(String[] args) {Animal animal new Dog();Cat cat (Cat) animal; // 这将引发ClassCastException类转换异常}
}创建了Animal类和两个子类Dog、Cat我们试图将Dog对象的引用转为Cat类型这是一种不兼容的类型
因此抛出ClassCastException异常。
NumberFormatException
数字格式异常通常在字符串转为数字类型时发生格式错误时抛出
Code
String invalidNumber abc123;
int number Integer.parseInt(invalidNumber); // 这将引发NumberFormatException数字格式异常我们试图将包含字母字符的字符串abc123 转换为整数这是不合法的数字格式
因此会引发NumberFormatException数字格式异常。
常见的编译异常
SQLExceptionSQL异常它表示在执行SQL语句或与数据库交互的过程中发生了问题或错误。IOException输入/输出异常它表示在读取或写入文件、网络操作或其他I/O相关操作期间发生了问题或错误。FileNotFoundException文件未找到异常FileNotFoundException是IOException的一种子类表示尝试打开或读取一个不存在的文件时引发的异常。ClassNotFoundException类未找到异常表示在尝试加载类时找不到类定义的情况
异常处理机制
在Java中异常处理是通过一系列的关键字和机制来实现的。 try-catch块使用 try 和 catch 关键字来捕获和处理异常。异常可能会在 try 块中的代码中抛出而 catch 块则用于捕获异常并执行相应的处理代码。 try {// 可能会引发异常的代码
} catch (ExceptionType e) {// 处理异常的代码
}多重catch两块一个try块可以有多个catch块用于捕获不同类型的异常这样可以根据不同的类型异常执行不同的逻辑。 try {// 可能会引发异常的代码
} catch (ExceptionType1 e1) {// 处理 ExceptionType1 类型的异常
} catch (ExceptionType2 e2) {// 处理 ExceptionType2 类型的异常
}finally块finally块用于包含try-catch块之后它包含的代码无论是否发生异常都会执行。 try {// 可能会引发异常的代码
} catch (ExceptionType e) {// 处理异常的代码
} finally {// 无论是否发生异常都会执行的代码
}throws关键字throw关键字可以用于在方法中主动引发异常并不能像try-catch块一样有处理异常的逻辑通常用于自定义异常或在特定条件下引发异常。 public void someMethod() throws ExceptionType {// 可能会引发异常的代码
}自定义异常
当程序中出现了某些“错误”但该类错误信息并没有在Throwable子类中描述处理这个时候可以自定义异常类用于描述该错误信息
自定义异常步骤 自定义异常类如果继承Exception属于编译类型异常如果继承RuntimeException属于运行时异常通过继承RuntimeException public class MyCustomException extends Exception {public MyCustomException() {super();}public MyCustomException(String message) {super(message);}public MyCustomException(String message, Throwable cause) {super(message, cause);}
}通过自定义异常类提供多个构造函数以便能够传递异常消息和可能的原因Throwable。这样可以让您的异常提供更多信息以便于调试和理解问题。 使用自定义类异常在代码中如果符合自定义异常的条件时使用throw关键字抛出自定义异常 public void someMethod() throws MyCustomException {// 某些条件导致自定义异常情况if (someCondition) {throw new MyCustomException(自定义异常消息);}// 其他代码
}捕获和处理自定义异常在应用程序的其他部分也可以使用 try-catch 块来捕获和处理自定义异常 try {someMethod();
} catch (MyCustomException e) {// 处理自定义异常System.out.println(捕获自定义异常 e.getMessage());
}throw和throws对比
意义位置后面根的东西throws异常处理的一种方式方法声明处异常类型throw手动生成异常对象的关键字方法体中异常对象 throw在代码中显示地抛出异常对象用于指定条件下的异常throw 后面通常跟着一个异常对象的实例化或引用 public void someMethod() {if (someCondition) {throw new SomeException(Custom error message);}
}throws用于在方法声明中指定该方法可能会抛出的异常类型。
public void someMethod() throws ExceptionType {// 可能会引发异常的代码
}通过这种方式您可以更清晰地呈现每个注解的信息和源码分析使读者更容易理解和学习Java异常的使用。希望这次的修改对您有所帮助如果需要进一步的修改或补充请随时提出。