📅  最后修改于: 2020-04-04 09:43:40             🧑  作者: Mango
Java定义了几种与其各种类库相关的异常类型。Java还允许用户定义自己的异常。
内置异常是Java库中可用的异常。这些异常适用于解释某些错误情况。以下是Java中重要的内置异常列表。
内置异常的示例:
// Java展示算术异常ArithmeticException
class ArithmeticException_Demo
{
public static void main(String args[])
{
try {
int a = 30, b = 0;
int c = a/b; // 不能除以0
System.out.println ("结果 = " + c);
}
catch(ArithmeticException e) {
System.out.println ("不能除以0");
}
}
}
输出:
不能除以0
//Java程序展示NullPointerException
class NullPointer_Demo
{
public static void main(String args[])
{
try {
String a = null; //null值
System.out.println(a.charAt(0));
} catch(NullPointerException e) {
System.out.println("NullPointerException..");
}
}
}
输出:
NullPointerException..
// Java展示StringIndexOutOfBoundsException
class StringIndexOutOfBound_Demo
{
public static void main(String args[])
{
try {
String a = "This is like chipping "; // 长度 22
char c = a.charAt(24); // 获取第25个元素
System.out.println(c);
}
catch(StringIndexOutOfBoundsException e) {
System.out.println("StringIndexOutOfBoundsException");
}
}
}
输出:
StringIndexOutOfBoundsException
//Java程序展示FileNotFoundException
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
class File_notFound_Demo {
public static void main(String args[]) {
try {
// 下面的文件不存在
File file = new File("E://file.txt");
FileReader fr = new FileReader(file);
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
}
}
}
输出:
文件不存在
// Java程序展示NumberFormatException
class NumberFormat_Demo
{
public static void main(String args[])
{
try {
// "akki" 不是一个数字
int num = Integer.parseInt ("akki") ;
System.out.println(num);
} catch(NumberFormatException e) {
System.out.println("数字格式错误");
}
}
}
输出:
数字格式错误
// Java程序,展示ArrayIndexOutOfBoundException
class ArrayIndexOutOfBound_Demo
{
public static void main(String args[])
{
try{
int a[] = new int[5];
a[6] = 9; // 获取第7个元素
// 但array长度为5
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println ("Array的索引超出范围");
}
}
}
输出:
Array的索引超出范围
用户定义的异常
有时,Java中的内置异常无法描述某种情况。在这种情况下,用户还可以创建称为“用户定义的异常”的异常。
按照以下步骤创建用户定义的异常。
class MyException extends Exception
MyException(){}
MyException(String str)
{
super(str);
}
MyException me = new MyException(“Exception详情");
throw me;
// Java展示用户定义的异常
class MyException extends Exception
{
// 存储账户信息
private static int accno[] = {1001, 1002, 1003, 1004};
private static String name[] =
{"Nish", "Shubh", "Sush", "Abhi", "Akash"};
private static double bal[] =
{10000.00, 12000.00, 5600.0, 999.00, 1100.55};
// 默认构造函数
MyException() { }
// 参数化构构造函数
MyException(String str) { super(str); }
// 编写main()
public static void main(String[] args)
{
try {
// 打印头信息
System.out.println("ACCNO" + "\t" + "CUSTOMER" +
"\t" + "BALANCE");
// 展示实际情况
for (int i = 0; i < 5 ; i++)
{
System.out.println(accno[i] + "\t" + name[i] +
"\t" + bal[i]);
// 展示异常,如果余额 < 1000
if (bal[i] < 1000)
{
MyException me =
new MyException("余额小于 1000");
throw me;
}
}
} //try结束
catch (MyException e) {
e.printStackTrace();
}
}
}
运行时错误
MyException: Balance is less than 1000
at MyException.main(fileProperty.Java:36)
输出:
ACCNO CUSTOMER BALANCE
1001 Nish 10000.0
1002 Shubh 12000.0
1003 Sush 5600.0
1004 Abhi 999.0