/**
* 异常:在程序中导致程序中断运行的一些指令
* 1.受检异常:编译期
* 2.非受检异常:运行期
* 异常处理过程分析:
* 1.一旦产生异常,系统会自动产生一个异常类的实例化对象
* 2.此时如果存在对应try语句,则执行,否则程序将退出,并由系统报告错误
*
*/
public class Main {
public static void main(String[] args) {
/*
try{
//有可能发生异常的代码段
}catch(异常类型对象){
//异常的处理操作
}catch(异常类型对象){
//异常的处理操作
}...
finally{
//异常的统一出口
}
*/
int a = 100;
Scanner input = new Scanner(System.in);
try{
for(int i=0;i<10;++i){
int b = input.nextInt();
int c = a / b;
System.out.println(c);
}
}catch(ArithmeticException e){
System.out.println("算术运算异常");
e.printStackTrace(); //输出栈中的异常信息
}catch(Exception e){
System.out.println("运算异常");
}finally{ //用途:资源的释放
System.out.println("finally:不管try中的语句是否出现异常都会执行");
} div(10,2);
} public static int div(int a,int b){
int res=0;
try{
res=a/b;
return res; //执行完finally里的东西才执行这句
}catch(ArithmeticException e){
e.printStackTrace();
return 0;
}finally{
System.out.println("除法运算结束");
}
}
}
public class Main {
public static int add() throws InputMismatchException{ //抛出,让上级去处理
Scanner input = new Scanner(System.in);
try{
int a = input.nextInt();
int b = input.nextInt();
return a+b;
}catch(InputMismatchException e){
//throw new InputMismatchException("There is a mistake.");
throw e;
}finally{
System.out.println("All finished.");
}
}
public static void main(String[] args) {
try{
System.out.println(add());
}catch(InputMismatchException e){ //上级来处理
e.printStackTrace();
}
}
}
/**
* 自定义异常类:可以通过继承Exception类或已有的异常类 例:某些业务逻辑不合理则可定义成异常
*/
public class Main {
public static int count = 5; //打飞机的次数
public static void play() throws LogicException{
/**
* 打飞机游戏
*/
Scanner input = new Scanner(System.in);
while(true){
System.out.print("请输入非零数字:");
int yesno = input.nextInt();
if(0==yesno){
System.out.println("退出游戏");
return;
}
if(0==count){
throw new LogicException("你的飞机已打光!");
}
System.out.println("你还有"+(--count)+"架飞机");
}
}
public static void main(String[] args) {
try{
play();
}catch(LogicException e){
e.printStackTrace();
}
}
} class LogicException extends Exception{
public LogicException(){
super();
}
public LogicException(String msg){
super(msg);
}
}
/**
* 受检与非受检异常:在编译期是否受检查
* 受检异常必须用throws关键字,并且要用try,非受检可以不用
*
* assert关键字:表示断言,当程序执行到某个固定位置时,程序中某个变量的取值肯定是预期的结果,那么这种操作可以使用断言完成
* 操作语法:assert 表达式
*/
public class Main {
public static void main(String[] args) {
int x = 11;
assert x==10:"结果不正确"; //需要启动断言,加VM参:-ea
}
}
/**
* #快捷键:按住Ctrl,然后点类名,可以查看原代码
* 使用String连接字符串,代码性能会非常低,因为String的内容不可改变(连接时不断创建新的char数组)
* 解决方法:StringBuffer
* StringBuffer的兄弟:StringBuilder(比StringBuffer简单些,速度更快些,建议优先使用)
* 区别:StringBuilder字符串缓冲区被单个线程使用,StringBuffer是多线程,具体百度吧。。。
*/
public class Main {
public static void main(String[] args) {
String s = "fish7";
StringBuffer sb = new StringBuffer();
sb.append("此刻打盹,你将做梦。");
sb.append("此刻学习,你将圆梦。");
System.out.println(sb);
//具体的各种方法查java手册
}
}
/**
* 代码国际化:Locale类、ResourceBundle类
* 具体百度吧。。。。
*
* 动态文本:欢迎你,某某某(不确定) 用到MessageFormat类
*/
public class Main {
public static void main(String[] args) {
Locale l1 = new Locale("zh","CN");
Locale l2 = Locale.CANADA;
Locale l3 = Locale.getDefault(); //当前系统环境 //通过ResourceBundle工具类绑定资源文件(包名 文件名的基本名称)
ResourceBundle r1 = ResourceBundle.getBundle("pkg1.info",l1); //从绑定的资源文件(属性文件)中根据key获取对应的value
Scanner input = new Scanner(System.in);
String inputKey = r1.getString("input");
String userName = r1.getString("userName"); }
}

JAVA笔记9__异常/throw关键字/自定义异常/受检与非受检异常、assert关键字/StringBuffer、StringBuilder/代码国际化、动态文本的更多相关文章

  1. JAVA受检异常和非受检异常举例

    受检异常和非受检异常(运行时异常)举例 RuntimeException(即非受检异常): RuntimeException在默认情况下会得到自动处理,所以通常用不着捕获RuntimeExceptio ...

  2. 【Java面试】请简单说一下你对受检异常和非受检异常的理解

    Hi,我是Mic 今天给大家分享一道阿里一面的面试题. 这道题目比较基础,但是确难倒了很多人. 关于"受检异常和非受检异常的理解" 我们来看看普通人和高手的回答. 普通人: 嗯.. ...

  3. JAVA可检测异常和非检测异常

    Java的可检测异常和非检测异常泾渭分明.可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则. 非检测异常不遵循处理或声明规则.在产生此类异常时,不一定非要采取任何适当 ...

  4. C#中try catch中throw ex和throw方式抛出异常有何不同_异常捕获堆栈丢失问题

    前言,最近遇到一个使用try-catch异常捕获后记录一下日志,然后再抛出该异常后,异常堆栈里无法显示准确的堆栈地址的问题?   其实以前也遇到过类似问题,没有重视,这次好好研究了下,并上度娘上找了找 ...

  5. Java检查异常和非检查异常,运行时异常和非运行时异常的区别

    通常,Java的异常(包括Exception和Error)分为检查异常(checked exceptions)和非检查的异常(unchecked exceptions).其中根据Exception异常 ...

  6. Java基础知识强化之IO流笔记07:自定义的异常概述和自定义异常实现

    1. 开发的时候往往会出现很多问题(java内部系统框架中没有提供这些异常) 比如说:考试成绩必须在0~100之间. 很明显java没有对应的异常,需要我们自己来做一个异常. (1)继承自Except ...

  7. -1-6 java 异常简单介绍 java异常 异常体系 Throwable 分类 throws和throw 异常处理 自定义异常

      异常   异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象. 其实就是Java对不正常情况进行描述 ...

  8. Effective java笔记(八),异常

    57.只针对异常的情况才使用异常 try { int i = 0; while(true) range[i++].climb(); }catch(ArrayIndexOutOfBoundsExcept ...

  9. Java中处理异常throw和throws

    1.首先我们来了解什么是异常呢? 异常阻止当前方法或作用域继续执行的问题. 2.处理异常 说到处理异常,我们当然会想到 try catch finally 在java中我们会对异常的处理有更高的认识 ...

随机推荐

  1. 洛谷P1088——火星人(全排列+数学模拟)

    题目描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学 ...

  2. CentOS8部署nextcloud网盘

    Nextcloud是一款开源的存储软件,功能丰富,支持多人协同工作,目前完全免费. 官网:https://www.nextcloud.com 架构:LAMP或LNMP 本文以LAMP为基础 注意:ph ...

  3. JSON,XML设计模式详解

    JSON在Java中的应用: Json概念: json 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式用来存储和表示数据.JSON的语言简洁清晰,广为大众所欢迎,是一种理想的数据交换语言 ...

  4. PHP的那些魔术方法(一)

    在PHP中,有一堆魔术方法,服务于类和对象.PHP虽然也是纯种的面向对象语言,但是之前的PHP还真不是,所以有一些面向对象的标准实现并不完善,比如重载.但是,我们可以通过一些魔术方法来弥补,例如__c ...

  5. linux centos windows服务器修改数据库最大连接数的方法

    1.可查询数据库最大连接数 show variables like '%max_connections%'; 2.修改数据库最大连接数,最大限制上限为16384. 找到数据库配置文件my.cnf,在配 ...

  6. Uncaught TypeError: upload is not a function at HTMLInputElement.onclick

    js 中标签的id名称不能和方法名一样, <tr> <td><input type="button" id="login" val ...

  7. bzoj#4423-[AMPPZ2013]Bytehattan【并查集】

    正题 题目链接:https://darkbzoj.tk/problem/4423 题目大意 给出一个\(n*n\)的网格图,然后四联通的点之间连接.每次删掉一条边求这条边的两个点是否连通.强制在线. ...

  8. CF587F-Duff is Mad【AC自动机,根号分治】

    正题 题目链接:https://www.luogu.com.cn/problem/CF587F 题目大意 给出\(n\)个字符串\(s\).\(q\)次询问给出\(l,r,k\)要求输出\(s_{l. ...

  9. AT5661-[AGC040C]Neither AB nor BA【模型转换】

    正题 题目链接:https://www.luogu.com.cn/problem/AT5661 题目大意 一个包含\(A,B,C\)的序列,每次可以选择相邻的两个除了\(AB\)和\(BA\)的删去. ...

  10. YbtOJ#883-最大的割【带修线性基】

    正题 题目链接:http://www.ybtoj.com.cn/contest/118/problem/3 解题思路 给出\(n\)个点,\(m\)次动态插入一条无向边询问:割掉一些边使得图中至少两点 ...