throw

异常对象:
(1)jvm自动抛出
(2)程序员手动抛出

无论是jvm自动抛出还是throw手动抛出,最懂都用try…catch处理或者通过throws抛给上级

throw关键字是用于主动抛出异常对象。
语法格式:
语句:throw 异常对象;

说明:如果没有try…catch,他可以替代return语句结束当前的方法。但是无法返回正常对的结果,只能带回异常的对象

Exception:
(1)构造器 可以给message属性赋值
new Exception(“校验码输入错误”)
(2)String getMessage

需求:
从键盘输入用户名,密码,校验码。
当校验码错误的时候,用异常来表示

import java.util.Scanner;
import org.junit.Test;
import javafx.scene.transform.Scale;public class TestThrow_8 {@Testpublic void test4() {try {login();System.out.println("登陆成功");} catch (Exception e) {System.out.println("登录失败,失败的原因:" + e.getMessage());}}public void login() throws Exception {Scanner input = new Scanner(System.in);System.out.println("请输入用户名:");String username = input.nextLine();System.out.println("请输入用户密码:");String password = input.nextLine();String code = "1234";System.out.println("请输入用户校验码:(" + code + ")");String check = input.nextLine();if(!code.equals(check)) {//编译时异常,现在必须处理,用了throws处理throw new Exception("校验码输入错误");//非运行时异常,按编译时异常处理
//          throw new RuntimeException("校验码输入错误");}//这里做一个假的登录//假设用户名:admin,密码123if(!("admin".equals(username) && "123".equals(password))) {throw new Exception("用户名或者登陆密码错误");}}@Testpublic void test1() {try {RuntimeException r =  new RuntimeException("运行时异常");throw r;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("其他代码");}@Testpublic void test2() {try {//匿名对象throw new RuntimeException("运行时异常");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("其他代码");}@Testpublic void test3() {throw new RuntimeException("运行时异常");//System.out.println("其他代码");}
}

自定义异常

自定义异常的要求:
1、
java当中都讲究“见名知意”

Throwable 类是java 语言中所有错误或异常的超类。
只有当对象是此类(或其子类之一)的实例时,才能通过java虚拟机或者java throw语句抛出。
类似的,只有此类或其子类之一才可以是catch子句中的参数类型

结论:要想一个类成为“异常类型”,必须继承Throwable或他的子类

2、自定义异常的对象,只能由throw语句手动抛出

3、建议自定义异常,增加两个构造器
(1)无参构造尽量保留
(2)有参构造:异常类型(String message),可以为message属性赋值
(3)printStackTrace():打印异常的堆栈信息

需求:
从键盘输入用户名,密码,校验码。
当校验码错误的时候,用异常来表示

import java.util.Scanner;
import org.junit.Test;public class TestDefineException_9 {@Testpublic void test2() {System.out.println("hello");System.err.println("world");}@Testpublic void test() {try {login();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void login() throws Exception {Scanner input = new Scanner(System.in);System.out.println("请输入用户名:");String username = input.nextLine();System.out.println("请输入用户密码:");String password = input.nextLine();String code = "1234";System.out.println("请输入用户校验码:(" + code + ")");String check = input.nextLine();if(!code.equals(check)) {//编译时异常,现在必须处理,用了throws处理throw new Exception("校验码输入错误");//非运行时异常,按编译时异常处理
//          throw new RuntimeException("校验码输入错误");}//这里做一个假的登录//假设用户名:admin,密码123if(!("admin".equals(username) && "123".equals(password))) {throw new UsernameOrPasswordError("用户名或者登陆密码错误");}}
}//一定要继承
class UsernameOrPasswordError extends Exception{//(1)无参构造尽量保留//(2)有参构造:异常类型(String message),可以为message属性赋值//用父类的构造器form superclasspublic UsernameOrPasswordError() {super();// TODO Auto-generated constructor stub}public UsernameOrPasswordError(String message) {super(message);// TODO Auto-generated constructor stub}}

throw 、自定义异常相关推荐

  1. throws throw 自定义异常

    我们知道当程序遇到异常时除了用try-catch-finally来捕获异常外,还可以用throws和throw去抛出异常,使用异常处理可以定位问题所在处,方便修改程序代码: 例如利用try-catch ...

  2. 【Java 异常】try-catch、finally、异常的种类、throws、thorw、自定义异常、断言类

    异常 开发中的错误(语法错误.逻辑错误.异常) 异常(Exception) try-catch 异常对象的常用方法(getMessage.printStackTrace) finally 异常的种类( ...

  3. Day12 Java异常处理与程序调试

    什么是异常? 不正常的,会影响程序的正常执行流程. 例如下面的程序 public static void main(String[] args) {TestDemo1 t = new TestDemo ...

  4. Java不要放弃之路

    (1)Java入门 变量与注释 用户输入 if 语句 java中的循环 while (2)Java基础 java 编码与基础数据类型以及之间转化 基本数据类型之间的运算 基本运算符 switch语句 ...

  5. 微信支付—微信H5支付「PC端扫码支付」

    前言 微信支付-微信H5外部浏览器支付 微信支付-微信H5内部浏览器支付 微信支付-PC端扫码支付「本文」 本篇是微信支付系列的第三篇,PC端扫码支付. 开发环境:Java + SpringBoot ...

  6. 【转】【C++学习笔记】C++异常处理

    转自:[C++学习笔记]C++异常处理!你绝对不能错过的干货! - 知乎 合理地使用C++异常处理,能够使我们写出来的程序更加稳定强健,不易崩溃.那么,应该如何使用C++异常处理呢?下面,我们就来向大 ...

  7. 第七章 ---- 异常处理

    文章目录 异常 异常体系结构 异常处理机制 try {} catch{} finally{} throws 开发中 throw 自定义异常 异常 异常体系结构 运行时异常:运行时出现的异常 编译时异常 ...

  8. JAVA大数据-Week2-DAY5

    文章目录 前言 第三章-第6节 异常处理 try-catch throws throw 自定义异常 任务 快递-views 快递-完善 总结 前言 第三章-第6节 异常处理 try-catch thr ...

  9. C++异常(异常的基本语法、栈解旋unwinding、异常接口声明、异常变量的生命周期、异常的多态使用、C++系统标准异常库)

    文章目录 1 异常的基本概念 1.1 C语言中的异常处理 1.2 C++中的异常处理 1.3 异常严格类型匹配 2 栈解旋(unwinding) 3 异常的接口声明[C++11已废弃] 4 异常变量的 ...

  10. Java基础(适合新学者和架构师阅读)

    近日为了复习CoreJava故自己收集了很多书籍汇编成以下java最核心的内容:参考出处(Java从入门到精通,Java学习手册(app))备注:我不留对别人毫无用处的博文,所以如果对你有用处请评论. ...

最新文章

  1. NURBS曲面结构及生成原理、修改方法
  2. 【Flask项目2】项目基本架构配置(1)
  3. Linux网络编程一步一步学+基础
  4. CentOS7系统上的GPSTK源码安装
  5. LeetCode【119. 杨辉三角 II】
  6. 公司买网络设备,至少16口
  7. 优秀 java工程师 简历
  8. sql server 2005 32位+64位、企业版+标准版、CD+DVD 下载地址大全【申明:来源于网络】
  9. 指令系统相兼容的计算机称为系列机,第4章指令系统.ppt
  10. Word模板引擎使用指南
  11. 网约护士来了?相关App不合规 两大安全问题最受关注
  12. 2019年全国大学生电子设计竞赛综合测评
  13. windows10升级助手_别用 XX 清理助手了,这 5 个自带技巧让你的 Windows 多出 5GB
  14. Elasticsearch与最新的log4j2零日漏洞
  15. 木纹标识lisp_Lisp
  16. 量子纠缠的超距作用,超光速是假象
  17. 文本代码编辑器UltraEdit v26.00.0.74 中文版下载与破解方法【亲测有效】
  18. 《Windows 程序设计(第3版)》——导读
  19. Python文件及文件夹处理
  20. LVS 负载均衡服务器搭建(详细)

热门文章

  1. Linux 下进入Vi 与退出方法
  2. AOV网络(有向图)----拓扑排序--判断有无环的问题--12月18日
  3. v58.03 鸿蒙内核源码分析(环境脚本) | 编译鸿蒙原来很简单 | 百篇博客分析HarmonyOS源码
  4. 浅谈android应用的版本更新
  5. DeBank 的钱包 Rabby Swap 智能合约被利用
  6. 关于农村医疗保险的了解
  7. myeclipse配置springmvc教程
  8. 计算机组成原理总结心得,计算机组成原理心得
  9. 奢侈品销售的艺术:顶级奢侈品品牌的销售圣经
  10. oracle 笔记4(Fundamentals II)