20.java当中的异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20.java当中的异常相关的知识,希望对你有一定的参考价值。

  • 什么是异常
    • 异常:中断了正常指令流的事件 
 
  • 异常的分类
    技术分享
 
    • uncheck exception
  1. classTest{
  2. publicstaticvoid main(String args[]){
  3. System.out.println(1);
  4. //uncheck exception
  5. int i =1/0;
  6. System.out.println(2);
  7. }
  8. }
结果:
D:\\work\\src>javac Test.java
D:\\work\\src>java Test
1
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Test.main(Test.java:5)
 
    • check exception
      • 包括exception这个类以及exception除了runtimeException之外的子类
 
  1. classTestCheck{
  2. publicstaticvoid main(String args []){
  3. //check exception
  4. Thread.sleep(1000);
  5. }
  6. }
结果:
D:\\work\\src>javac TestCheck.java
TestCheck.java:4: 错误: 未报告的异常错误InterruptedException; 必须对其进行捕获或声明以便抛出
                Thread.sleep(1000);
 
 
  • try...catch...finally结构的使用方法
    • 如果try里面的代码出现异常就执行catch中的代码,不出异常就不执行catch中的代码,而finally中的代码都会执行,称为异常的窗口
    • 对异常进行捕捉
 
  1. classTest{
  2. publicstaticvoid main(String args[]){
  3. System.out.println(1);
  4. //uncheck exception
  5. try{
  6. //打开文件
  7. System.out.println(2);
  8. int i =1/0;
  9. System.out.println(3);
  10. }
  11. catch(Exception e){
  12. e.printStackTrace();
  13. System.out.println(4);
  14. }
  15. finally{
  16. System.out.println("finally");
  17. //关闭文件
  18. }
  19. System.out.println(5);
  20. }
  21. }
结果:
D:\\work\\src>javac Test.java
 
D:\\work\\src>java Test
1
2
java.lang.ArithmeticException: / by zero
        at Test.main(Test.java:8)
4
finally
5
 
 
  • throw的作用
    • 如果一个异常java虚拟机无法判断,可以在出现异常的时候,生成一个异常对象,然后用throw+异常对象,抛出异常
 
  1. classUser{
  2. privateint age;
  3. publicvoid setAge(int age){
  4. if(age <0){
  5. RuntimeException e =newRuntimeException();
  6. throw e;
  7. }
  8. this.age = age;
  9. }
  10. }
 
  1. classTest{
  2. publicstaticvoid main(String args []){
  3. User user =newUser();
  4. user.setAge(-20);
  5. }
  6. }
 
结果:
D:\\work\\src>javac *.java
 
D:\\work\\src>java Test
Exception in thread "main" java.lang.RuntimeException
        at User.setAge(User.java:6)
        at Test.main(Test.java:4)
 
  • throws的作用
    • 声明一个函数有可能会出现异常
    • 函数不会处理,而在调用这个函数的地方,对这个异常进行处理
 
  1. classUser{
  2. privateint age;
  3. publicvoid setAge(int age) throws Exception{
  4. if(age <0){
  5. RuntimeException e =newRuntimeException("年龄不能为负数");
  6. throw e;
  7. }
  8. this.age = age;
  9. }
  10. }
 
  1. classTest{
  2. publicstaticvoid main(String args []){
  3. User user =newUser();
  4. try{
  5. user.setAge(-20);
  6. }
  7. catch(Exception e){
  8. System.out.println(e);
  9. }
  10. }
  11. }
 
结果:
D:\\work\\src>javac *.java
 
D:\\work\\src>java Test
java.lang.RuntimeException: 年龄不能为负数
 





以上是关于20.java当中的异常的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

Java当中的异常2

片段中的Android致命异常

springcloud报错-------关于 hystrix 的异常 FallbackDefinitionException:fallback method wasn't found(代码片段

C语言必会面试题(3耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)(代码片段

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段