JAVA学习-异常处理

异常:

结构:

Throwable

  • Error
  • Exception

异常的分类:

可检测异常

非检测异常:

RuntimeException

异常的处理:

抛出异常:

throws:用在方法声明的位置,跟的是异常类型

throw:用在方法体中的,跟的是异常对象

子类重写父类的方法,如果父类的方法中抛出异常:

子类重写时,注意:

  1. 可以不抛异常
  2. 可以抛出父类中异常的一部分
  3. 可以抛出父类异常的子类异常
  4. 不可以抛出父类异常的父类类型
  5. 不可以抛出父类中没有的异常

捕获异常 :

try{}catch(){}

catch可以出现多次

如果多个catch中的异常类型存在父子关系,一定是子类异常在前,父类异常在后

finally块:

特点:不论是否发生异常,finally中的代码块都会执行

通常用于释放资源

final,finally,finalize的区分

final:一个修饰符,可以用来修饰变量,方法,类

finally:和try..catch配合使用的,通常是用于释放资源

finalize():是GC回收时会调用的一个方法

是Object类中的一个方法,通常会被子类重写,

calss Person{

           public void finalize(){

                                      //在对象被回收之前,调用此方法,此方法通常用于在对象回收前做最后的资源释放操作

                            }

                    }

​​​​​​​自定义异常:运行时异常

自己根据业务写异常类

实现:

  1. 定义类UserNotFoundException  extends Exception/RuntimeException
  2. 在自定义类中写出构造方法

案例:

用户找不到异常在登录模块中的一个应用

public class UserNotFoundException extends RuntimeException {

        private static final long serialVersionUID = 4071329175600254484L;

        public UserNotFoundException() {

        super();

        // TODO Auto-generated constructor stub

    }

public UserNotFoundException(String message, Throwable cause, boolean enableSuppression,

boolean writableStackTrace) {

        super(message, cause, enableSuppression, writableStackTrace);

         // TODO Auto-generated constructor stub

    }

public UserNotFoundException(String message, Throwable cause) {

        super(message, cause);

       // TODO Auto-generated constructor stub

    }

public UserNotFoundException(String message) {

         super(message);

         // TODO Auto-generated constructor stub

     }

public UserNotFoundException(Throwable cause) {

        super(cause);

        // TODO Auto-generated constructor stub

          }

    }

public class LoginController {

        public static void main(String[] args) {

         LoginService loginService = new LoginService();

         try{

         loginService.findUser("aa", "123445");

        }catch(UserNotFoundException e){

        System.out.println(e.getMessage());

         e.printStackTrace();

}

}

}

 

/*

 * 业务处理

 */

public class LoginService {

public void findUser(String name,String pwd){

//调用findUser()

LoginDao dao = new LoginDao();

User user = dao.findUser(name, pwd);

//根据user的值做出相应的业务判断

if(user==null){

throw new UserNotFoundException("用户不存在!");

}

}

}

public class LoginDao {

public User findUser(String username,String pwd){

/*

 * 根据前台页面用户传来的用户名和密码去数据库

 * 查询此用户是否存在,如果不存在,抛出用户找不到

 * 异常

 */

//根据用户传来的信息去数据库查询,

//如果查到用户,那么将用户的所有信息返回保存到user对象中

//如果查询不到,说明用户不存在,那么user为null

User user = null;

return user;

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值