代码链接:https://download.csdn.net/download/qq_52354698/86266779?spm=1001.2014.3001.5503
Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)
执行过程的所发生的异常事件可分为两大类:

当应用程序试图在需要对象的地方使用 null 时,抛出该异常

package com.qdu.exception_;
/**
* @author dell
* @version 1.0
*/
public class NullPointerException {
public static void main(String[] args) {
String name = null;
System.out.println(name.length());
}
}

当出现异常的运算条件时,抛出此异常。

package com.qdu.exception_;
/**
* @author dell
* @version 1.0
*/
public class ArithmeticException {
public static void main(String[] args) {
int a = 10;
int b = 0;
int sum = a / b;
}
}

使用非法索引访问数组时抛出的异常。

package com.qdu.exception_;
/**
* @author dell
* @version 1.0
*/
public class ArrayIndexOutOfBoundsException {
public static void main(String[] args) {
int arr[] = {2, 3, 4};
for (int i = 0; i <= arr.length; i ++ ) {
System.out.println(arr[i]);
}
}
}

当试图将对象强制转为不是实例的子类时,抛出该异常。

package com.qdu.exception_;
/**
* @author dell
* @version 1.0
*/
public class ClassCastException {
public static void main(String[] args) {
A b = new B();
B b1 = (B)b;
C c = (C)b;
}
}
class A{}
class B extends A{}
class C extends A{}

当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

package com.qdu.exception_;
/**
* @author dell
* @version 1.0
*/
public class NumberFormatException {
public static void main(String[] args) {
String name = "king";
int num = Integer.parseInt(name);
System.out.println(num);
}
}

编译异常是指在编译期间,就必须处理的异常,否则编译的代码不能通过。
异常处理就是当异常发生时,对异常处理的方式
异常处理的方式


Java提供try和catch块来处理异常。try块中用于包含可能出错的代码。catch块用于处理try块中发生的异常。可以根据需要在程序中设置多个try-catch块。
try{
//可疑代码
//将异常生成对应的异常对象,传递给catch块
}catch(异常){
//对异常的处理
}
try{
}catch(NullPointerException e){
}catch(Exception e){
}
try{
}finally{
}
当程序中出现了某些“错误”,但该错误信息并没有在Throwable子类中描述处理,这个时候就可以自己设计异常类,用于描述该错误信息。
package com.qdu.exception_;
/**
* @author dell
* @version 1.0
*/
public class CustomException {
public void main(String[] args) /*throws AgeException*/ {
int age = 180;
if (!(age >= 18 && age <= 120)) {
throw new AgeException("年龄需要在 18~120 之间");
}
System.out.println("你的年龄范围正确.");
}
class AgeException extends RuntimeException {
public AgeException(String message) {//构造器
super(message);
}
}
}
