package javaObject;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class javaError {
public static void main(String[] args) {
/*
* 所谓错误,就是程序调用某个函数的时候,如果失败了,就表示出错。
*
* 方法一:约定返回错误码。
* 方法二:在语言层面上提供一个异常处理机制。
* java内置了一套异常处理机制,总是使用异常来表示错误。
* 异常是一种class,因此它本身带有类型信息。异常可以在任何地方抛出,但只需要在上层捕获,这样就和方法调用分离了
*
* Throwable有两个体系:
* 1 Error,表示严重的错误,程序对此一般无能为力。如内存耗尽 OutOfMemoryError, 无法加载某个类NoClassDefFoundError,栈溢出 StackOverflowError
* 2 Exception,表示运行时的错误,它可以被捕获并处理,分为两大类
* (1)RuntimeException以及它的子类
* (2)非 RuntimeException
*
* Java规定:
* 必须捕获的异常,包括Exception及其子类,但不包括RuntimeException及其子类,这种类型的异常称为Checked Exception。
* 不需要捕获的异常,包括Error及其子类,RuntimeException及其子类。
*
* 捕获异常使用try...catch语句,把可能发生异常的代码放到try {...}中,然后使用catch捕获对应的Exception及其子类。
*
*/
int[] ages = {1,2};
//
try {
System.out.println("第一个元素值是:" + ages[-1]);
} catch (Exception e) {
// TODO: handle exception
System.out.println("异常信息:" + e);
}
//
try {
// try 正常执行
System.out.println("第三个元素值是:" + ages[2]);
} catch (Exception e) {
// catch 捕获并抛出异常
System.out.println("异常信息:" + e);
} finally {
// finally 出现在 catch 代码块最后,且不论正常与否总会被执行。
System.out.println("第三个元素值是:" + 0);
}
// 异常,程序中止
// System.out.println("第三个元素值是:" + ages[2]);
MineBankMoney mineBank = new MineBankMoney(100);
mineBank.showMoney();
mineBank.saveMoney(98);
mineBank.showMoney();
// mineBank.fetchMoney(310);
try {
mineBank.fetchMoney(310);
} catch (BankMoney e) {
// TODO: handle exception
System.out.println("取钱失败:" + e.showMessage());
}
mineBank.showMoney();
}
}
// 自定义异常
class BankMoney extends Exception {
private double money;
public BankMoney(double money) {
this.money = money;
}
public double getMoney() {
return this.money;
}
public String showMessage() {
return "余额不足,还差" + this.money + "元.";
}
}
class MineBankMoney {
private double money;
private int number;
public MineBankMoney(double money) {
this.money = money;
}
public void checkNumber(int number) {
this.number = number;
}
public void saveMoney(double money) {
this.money += money;
}
// 抛出异常
public void fetchMoney(double money) throws BankMoney {
if (money <= this.money) {
this.money -= money;
} else {
double needs = money - this.money;
throw new BankMoney(needs);
}
}
public double showMoney() {
System.out.println("卡内余额:" + this.money);
return this.money;
}
public int showNumber() {
System.out.println("卡号:" + this.number);
return this.number;
}
}
Java学习之异常处理try{...}catch{...}finally{...}
猜你喜欢
转载自blog.csdn.net/potato512/article/details/103248260
今日推荐
周排行