Java异常

什么是异常: 只有程序运行起来才发生叫做异常。错误是编写的时候和运行的时候发生(范围大)。

异常会中断应用程序的运行。(  程序突然终止并将控制交给操作系统 )

伪代码:不运行

try与catch必须一起出现,其中可能会出现异常的语句放在try中间。出现异常后的处理放在catch中间。try之间可以放多条语句。也可以放多个try与catch.,一个try可以对多个catch,但反之不行。

package Chap3;

public class MyExceptiontest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int i=9;
  try{
   i=i/0;
  }catch(Exception e){
   
  }
  System.out.println(i);

 }

}

---------------------------------------------------------------------我是无敌分割线-----------------------------------------------------

package Chap3;

public class MyExceptiontest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int i=9;
  try{
   i=i/0;
  }catch(Exception e){
   System.out.println(e.getMessage());

getmessage得到异常的地方,并不影响程序的运行
  }
  System.out.println(i);

 }

}

----------------------------------------------------我是无敌分割线----------------------------------------------

finally:try、catch与finally三个一起出现。通常来释放资源,只能出现一次。
 
throw:
 
throws:
----------------------------------------------------我是无敌分割线----------------------------------------------
Exception:是所有异常的根。
 
RuntimeException :所有异常的基类,运行时异常。
 
ArithmeticException :有用。
 
IllegalArgumentException:参数错误异常
 
ArrayIndexOutOfBoundException:数组下标越界异常
 
NullPointerException:空指针异常(Java程序90%是这个问题)对象未赋值时或对对象和方法进行了引用就会引发空指针异常。
package Chap3;
public class Myexception {
 public static void main(String[] args){
  String s=new String();
  s=null;
  System.out.println(s.length());
 }
}//会提示空指针异常。
----------------------------------------------------我是无敌分割线----------------------------------------------
 
ClassNotFoundException:类找不到异常(Jdbc会遇到这种问题)。解决方法:没有加载JDBC驱动程序就会出现这种异常。
 
NumberFormatException:数值转换异常。
 
IOException:输入输出异常。
 
FileNotFoundException :找不到文件异常。
 
EOFException:文件结束异常。
 
InterruptedException:线程中断。
----------------------------------------------------我是无敌分割线----------------------------------------------
package Chap3;
public class Myexception {
 public static void main(String[] args){
  try{
   String s=null;
   System.out.println(s.length());
   int i=9;
   i=i/0;
  }
  catch(NullPointerException e){
   System.out.print("空指针异常");
  }
  catch(ArithmeticException e){
   System.out.print("算数异常");
  }
 }
}//因为s=null已经异常,所以下面的就不再运行。
----------------------------------------------------我是无敌分割线----------------------------------------------
异常处理块的一般模式
 
try{
  // 要监控错误的代码块
    ……
} catch (Exception e) {
  // Exception e 的异常处理程序
……
} finally{
  // try 结束前要执行的代码块
……
}
----------------------------------------------------我是无敌分割线----------------------------------------------
多catch异常:
q 当引发异常时,会按顺序来查看每个 catch 语句,并执行第一 个类型与异常类型匹配的语句
package Chap3;
public class Myexception {
 public static void main(String[] args){
  try{
   String s=null;
   System.out.println(s.length());
   int i=9;
   i=i/0;
  }
  catch(NullPointerException e){
   System.out.print("空指针异常");
  }
  catch(ArithmeticException e){
   System.out.print("算数异常");
  }
 }
}
----------------------------------------------------我是无敌分割线----------------------------------------------
 
使用多重 catch 语句时,异常子类一定要位于异常父类之前
 
try{
  …...
} catch(Exception e) {
  ……
} catch(ArrayIndexOutOfBoundsException e) {
  ……
}
此程序报错。
----------------------------------------------------我是无敌分割线----------------------------------------------
 
class NestedException {  
public test(String[] s) {
         try {
            int num = Integer.parseInt(s[0]);
            /* 嵌套 try 块。 */
            try {
                 int numValue = Integer.parseInt(s[0]);
                 System.out.println( s[0] + 的平方是 " +  numValue * numValue);
            } catch (NumberFormatException nb) {
                 System.out.println( 不是一个数字! ");
            }
       } catch (ArrayIndexOutOfBoundsException ne) {
           System.out.println( 请输入数字!!! ");
       }
   }
    /**main 方法 */
   public static void main(String[] args) {
       NestedException obj = new NestedException();
       String [ ]  s={“a”,”1”};
       obj.test(s);
    }// 尽量避免嵌套 TRY 的出现。
 }
----------------------------------------------------我是无敌分割线----------------------------------------------
 
Throw是语句,throws是子句。
throw用来抛出异常。故意弄出一个错误。创建错误用throw抛出。使用继承“异常”类既可。
自定义异常类的方法:
 
q 创建用户自定义异常
q 继承 Exception 或其子类
 
public class SexException extends Exception{ //extends继承就OK
public SexException(){
super ("性别不合法。");
}
}
----------------------------------------------------我是无敌分割线----------------------------------------------
throws用来声明函数可能会抛出哪些异常。
package Chap3;
public class Sextest {
  public static void main(String[] args) throws SexException {
   String sex="e";
   if (sex.equals("1") || sex.equals("0")){
    System.out.println("ok");
   }else{
    throw new SexException();
   }
  }
 }
谁是调用者就要加上throws。指明是谁要抛出异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值