throw是Java的关键字,该关键字的作用就是抛出异常;
throw和throws是两个不同的关键字;
throw用来抛出异常;(throw一般在方法里)
throws用来声明抛出异常,如果一个方法不想对自己可能产生的异常进行捕获和处理,则在方法声明时,使用throws子句抛出该异常。;(throws一般在头部)
异常类演示public class Test{
public static void main(String[] args) {
int n=0,m=0,t=1000;
try {
m = Integer.parseInt("8888"); //将输入的文字转为数字的方法
n = Integer.parseInt("ab89"); //发生异常,转向catch
t = 7777; //t没有机会被赋值
}
catch(NumberFormatException e){ //NumberFormatException表示数字格式化异常
System.out.println("发生异常:"+e.getMessage()); //getMessage() 将异常的详细信息输出出来
}
System.out.println("n="+n+",m="+m+",t="+t); //终止了语句的执行,赋值原始数值
try{
System.out.println("故意抛出I/O异常");
throw new java.io.IOException("我是故意的"); //故意抛出异常
//System.out.println("这个输出语句肯定没有机会执行,必须注释,否则编译出错");
}
catch (java.io.IOException e){
System.out.println("发生异常:"+e.getMessage());
}
}
}
Tip: ArithmeticException是出现异常的运算条件时,抛出此异常。.例如,一个整数“ 除以零 ”时,抛出此类的一个实例。
自定义异常类可以扩展Exception类定义自己的异常类,然后规定哪些方法产生这样的异常(即通过throw)。 Exception类有下面几个常用的构造方法:
Exception() | 构造详细消息为 null 的新异常。 |
Exception(String message) | 构造带指定详细消息的新异常。 |
BankExpection.java
public class BankExpection extends Exception {
String message;
public BankExpection(int m, int n) {
message = "入账资金" + m + "是负数或支出" + n + "是正数,不符合系统要求.";
}
public String warnMess() {
return message;
}
}
Bank.java
public class Bank {
private int money;
public void income(int in, int out) throws BankExpection {
if (in <= 0 || out >= 0 || in + out <= 0) {
throw new BankExpection(in, out); //方法抛出异常,导致方法结束
}
int netIncome = in + out;
System.out.printf("本次计算出的纯收入是:%d\n", netIncome);
money = money + netIncome;
}
public int getMoney() {
return money;
}
}
public class Test{
public static void main(String[] args) {
Bank bank= new Bank();
try{
bank.income(200,-100);
bank.income(300,-100);
bank.income(400,-100);
System.out.printf("银行目前有%d元\n",bank.getMoney());
bank.income(200,100);
bank.income(99999,-100);
}
catch (BankExpection e){
System.out.println("计算收益的过程出现如下问题:");
System.out.println(e.warnMess());
}
System.out.printf("银行目前有%d元\n",bank.getMoney());
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)