设为首页 加入收藏

TOP

Java异常处理实例讲解(二)
2018-06-09 10:07:50 】 浏览:486
Tags:Java 异常 处理 实例 讲解
ublic int div(int a, int b) {
        if(b == 0)
            throw new ArithmeticException();
        return a / b;
    }
}


所以这样写也是合法的。当然,函数名后面加上“throws ArithmeticException”也是可以的。


如果是非RuntimeException或者其子类的,必须处理,或者逐层抛出再处理。比如进行文件操作,或者连接数据库的时候:



进行某些操作时,必须抛出异常,或者处理异常。比如上述代码如果这样写,编译都不会通过,eclipse报错“Unhandle Exception type ClassNotFoundException”。


5、Throwable类


在学习自定义异常类之前,先学习一下Throwable类。从字面上理解,“可以抛”的类,Throwable是所有异常类的基类,他的直接子类有Error类,Exception类。Throwable中的类主要是一些可以打印异常信息的方法,比如说 getMessage(), printStackTrace().他的子类可以根据具体情况覆盖重写这些方法。


6、自定义异常类


class DefineException extends Exception{
    public DefineException() {
       
    }
    public DefineException(String str) {
        super(str);
    }
}


一般的格式就是这样,细节可以修改修改,可以根据实际情况覆盖重写Exception或者Throwable类的方法。当然,自定义的异常类必须要继承Throwable或者Exception。因为要想和throw、throws关键字搭配使用,必须是Throwable及其子类。


7、finally


finally一般和try catch相配合,在finally里处理一些必须要做、特别重要的信息,即使异常发生,finally里面的函数还是会被执行。特别是读写文件后的关闭、连接数据库的断开,比如下面的代码:


package com.ph;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test1 {


    public static void main(String[]args) {
        PreparedStatement ps=null;
        Connection ct=null;
        ResultSet rs=null;
        try {
            //1.加载驱动
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            //2.得到链接 127.0.0.1:1433
            ct=DriverManager.getConnection
                    ("jdbc:sqlserver://127.0.0.1:1433;databaseName=Mytest","sa","123456");
       
            ps=ct.prepareStatement("select * from course");
            rs=ps.executeQuery();
            while(rs.next()) {
                String cno=rs.getString(1);
                String cname=rs.getString(2);
                String tno=rs.getString(3);
                System.out.println("cno "+cno+" cname "+cname+" tno "+tno);
            }
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs != null) rs.close();
                if(ps != null) ps.close();
                if(ct != null) ct.close();
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
&nb

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇层级目录结构的Makefile递归编译.. 下一篇PyQt5 中QDialog值传递

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目