当前位置: 首页 > news >正文

异常(Exception)

1.错误与异常

1.错误

错误是指程序遇到非常严重的不正常状态,不能简单恢复执行,一般是在运行时遇到的硬件或操作系统的错误,如内存溢出,操作系统出错,虚拟机出错等,错误对于程序是致命的。

Error类 是错误类 该类由Java虚拟机生成并抛给系统,如内存溢出错误,栈溢出错误,动态链接错误等。

2.异常

异常通常指非致命性错误,一般指在运行程序时硬件和操作系统是正常的,而程序遇到了运行错,如除法运算时除数为零 ,操作数超出数据范围

Exception类是异常类,是Java应用程序捕获和处理的对象。

2.异常处理

捕获异常处理方式是通过try-catch-finally来捕获和处理异常的。

语法格式如下

try{

//将可能出现异常的代码放这里

}catch(要捕获的异常类型 e){

//如果try中的代码抛出异常了,此处catch捕获时 异常类型与try中抛出的异常类型一致时或者是try中抛出异常的基类时,就会被捕获到

}finally{

//此处代码一定会被执行

}

注意:catch和finally可以只有一项或者两项都有但是必须有一项

异常处理程序举例:

3.抛出异常

抛出异常需要借助两个关键字throw 与throws

1.throw

throw 异常对象;

异常对象是程序是创建的指定异常类对象。

public void set (int age){

if(age>0&&age<160)

this.age=age;

else

throw new Exception("IllegalAgeData");//抛出异常

}

2.throws

用于抛出方法体中的异常

语法格式:修饰符 返回类型 方法名(参数列表)throws 异常类1,异常类2.....

{

...

}

public void set (int age)throws Exception{

if(age>0&&age<160)

this.age=age;

else

throw new Exception("年龄无效"+age);

}

4.自定义异常类

自定义用户密码异常类

以自定义登录为例:

public class Login {private String UserName;private String Password;public Login(String userName, String password) {UserName = userName;Password = password;}public String getUserName() {return UserName;}public void setUserName(String userName) {UserName = userName;}public String getPassword() {return Password;}public void setPassword(String password) {Password = password;}public void Logininfo(String UserName, String Password){if(!this.UserName.equals(UserName)){throw new UsernameException("用户名错误。。。。。");}if(!this.Password.equals(Password)){throw new PasswordException("密码错误。。。。。");}else{System.out.println("登录成功!。。。。。。");}}
}

public class UsernameException extends RuntimeException{public  UsernameException(String s) {super(s);}public UsernameException(){this("");}
}//自定义密码异常类
public class PasswordException extends RuntimeException{
//需要继承RuntimeException或Exceptionpublic  PasswordException(String s) {super(s);}public PasswordException(){this("");}
}//自定义用户名异常类

http://www.mrgr.cn/news/29643.html

相关文章:

  • Vue开发风格
  • PostgreSQL 开启密码验证插件
  • Swagger enum 最佳实践:深度剖析与应用指南
  • JavaScript总结
  • 数字后端教程之Innovus report_property和get_property使用方法及应用案例
  • CSS多列布局:打破传统布局的束缚
  • OpenBayes 教程上新 | AI 时代的「神笔马良」,Hyper-SD 一键启动教程上线!
  • torchvision 教程
  • (待会删)分享8款AI写论文可以用到的网站神器,请低调使用!
  • ant-design表格自动合并相同内容的单元格
  • 基于windows下docker安装HDDM并运行
  • Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】
  • MODIS/Landsat/Sentinel下载教程详解【常用网站及方法枚举】
  • 【Manim】用manim描述二次曲面——上
  • 构建自己的文生图工具:Python + Stable Diffusion + CUDA
  • 为什么制造业要上MES,有哪些不得不上的理由吗?
  • AntFlow系列教程二之流程同意
  • 系统架构设计师 数据库篇
  • ARM架构中的重要知识点的详细解释
  • python中Web API 框架
  • 力扣之181.超过经理收入的员工
  • 多线程2(gamere)
  • Python 课程16-Pygame
  • spring security 手机号 短信验证码认证、验证码认证 替换默认的用户名密码认证132
  • itk c++ 3D医学图像刚性配准
  • 【与C++的邂逅】--- C++的IO流