Java Web简明教程–Java篇[6]–处理异常

简介: Java Web简明教程–Java篇[6]–处理异常

之前一篇已经描述了如何在工作中处理一些突如其来的错误——异常,但是大王应该还是不会满意的,决策者的时间是很宝贵的,汇报的时候应该有针对性,要总结,不能乱七八糟的就把问题抛给大王,所以刑部连夜加班,修改制度流程如下:

import java.util.Scanner;//导入用于获取控制台输入的类Scanner
public class ExceptionDemo {//异常演示的例子
  public static void main(String[] args) {
  while(true){
    //使用无限循环模拟永远在线等待指令的场景
    Scanner sc = new Scanner(System.in);
    System.out.println("大王,我们刑部这次要除掉哪个奸臣:");
    String command = sc.nextLine();//模拟获取大王指令
    int army=100;//总兵力
    try{//可能有错误的语句放在try里面
    int commandInt=Integer.parseInt(command);//理解大王旨意,军机处比较傻,只能理解数字
    int result=army/commandInt;
    System.out.println("大王,搞定,我们除掉【"+commandInt+"】了!");//模拟响应用户指令
    }
    catch(ArithmeticException exArithmetic){
    System.out.println("大王,搞定,我们在搞掉【"+command+"】时遇到了算术问题,任务失败");
    }
    catch(NumberFormatException exNumber){
    System.out.println("大王,搞定,我们在搞掉【"+command+"】时遇到了字符串转换问题,任务失败");
    }
    catch(Exception ex){//此处在下面测试中不会执行,为何?
    System.out.println("大王,我们遇到问题了:"+ex.getMessage());
    }finally{
    System.out.println("大王,之前"+command+"事情都过去了,您看还有需要什么要指示的吗?");
    }
  }
  }
}

此时,刑部响应大王指令的过程如下:


大王,我们刑部这次要除掉哪个奸臣:
0
大王,搞定,我们在搞掉【0】时遇到了算术问题,任务失败
大王,之前0事情都过去了,您看还有需要什么要指示的吗?
大王,我们刑部这次要除掉哪个奸臣:
张三
大王,搞定,我们在搞掉【张三】时遇到了字符串转换问题,任务失败
大王,之前张三事情都过去了,您看还有需要什么要指示的吗?
大王,我们刑部这次要除掉哪个奸臣:


这下,问题经过整理后抛出,便于决策者分析。那么常见的有哪些问题呢(异常)。

刚刚上文提到的两种是非常好理解的,ArithmeticException 是数学计算异常,NumberFormatException是 数字转换格式异常。好的,平时常用的异常稍微总结下:


NullPointerException:空指向异常,如果一个对象没new 直接使用,所以引用没有指向堆的地址,所以引用没有意义啊,那是要报错的。

ArrayIndexOutOfBoundsException:数组下标越界,这个好理解。

EOFException:文件已结束。

FileNotFoundException:文件未找到。

SQLException:数据库异常

NoSuchMethodException:方法未找到

ClassNotFoundException:找不到类异常


好的,不管Java中提供了多少种未定义的异常,总有它想不到的或者是我们想设置的,比如,如果大王自己规定,人名不能是负数,这种要算大王糊涂错误,那怎么处理呢,不要紧,可以自定义异常。如下自定义一个异常类:



public class MinusException extends Exception{//自定义异常类,因为继承了Exception类,所以成为了异常家族的一员
  public MinusException(String message)//构造函数,包含一条消息  
    {  
        super(message);  
    }  
}



好的,这样使用即可:

import java.util.Scanner;//导入用于获取控制台输入的类Scanner
public class ExceptionDemo {//异常演示的例子
  public static void main(String[] args) {
  while(true){
    //使用无限循环模拟永远在线等待指令的场景
    Scanner sc = new Scanner(System.in);
    System.out.println("大王,我们刑部这次要除掉哪个奸臣:");
    String command = sc.nextLine();//模拟获取大王指令
    int army=100;//总兵力
    try{//可能有错误的语句放在try里面
    int commandInt=Integer.parseInt(command);//理解大王旨意,军机处比较傻,只能理解数字
    int result=army/commandInt;
    if(result<0)
      throw new MinusException("负数错误,负数为:"+commandInt);
    System.out.println("大王,搞定,我们除掉【"+commandInt+"】了!");//模拟响应用户指令
    }
    catch(MinusException exMinus){
    System.out.println("大王,搞定,我们在搞掉【"+command+"】时遇到了"+exMinus.getMessage());
    }
    catch(ArithmeticException exArithmetic){
    System.out.println("大王,搞定,我们在搞掉【"+command+"】时遇到了算术问题,任务失败");
    }
    catch(NumberFormatException exNumber){
    System.out.println("大王,搞定,我们在搞掉【"+command+"】时遇到了字符串转换问题,任务失败");
    }
    catch(Exception ex){
    System.out.println("大王,我们遇到问题了:"+ex.getMessage());
    ex.printStackTrace();
    }finally{
    System.out.println("大王,之前"+command+"事情都过去了,您看还有需要什么要指示的吗?");
    }
  }
  }
}


大王看到这个报告,终于露出了会心的笑容:小子们,你们的路还长着呢,嘿嘿嘿嘿


大王,我们刑部这次要除掉哪个奸臣:
-1
大王,搞定,我们在搞掉【-1】时遇到了负数错误,负数为:-1
大王,之前-1事情都过去了,您看还有需要什么要指示的吗?
大王,我们刑部这次要除掉哪个奸臣:
相关文章
|
6月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
676 116
|
7月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
663 1
|
8月前
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
1128 4
|
7月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
784 0
|
8月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
869 64
|
7月前
|
安全 Java
Java之泛型使用教程
Java之泛型使用教程
441 10
|
6月前
|
Oracle Java 关系型数据库
Java 简单教程
Java是跨平台、面向对象的编程语言,广泛用于企业开发、Android应用等。本教程涵盖环境搭建、基础语法、流程控制、面向对象、集合与异常处理,助你快速入门并编写简单程序,为进一步深入学习打下坚实基础。
455 0
|
8月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
528 1
|
9月前
|
缓存 NoSQL Java
Java Web 从入门到精通之苍穹外卖项目实战技巧
本项目为JavaWeb综合实战案例——苍穹外卖系统,涵盖Spring Boot 3、Spring Cloud Alibaba、Vue 3等主流技术栈,涉及用户认证、订单处理、Redis缓存、分布式事务、系统监控及Docker部署等核心功能,助你掌握企业级项目开发全流程。
903 0
|
10月前
|
Java 程序员 数据库连接
我们详细地讲解一下 Java 异常及要如何处理
我是小假 期待与你的下一次相遇 ~
216 1