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

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. Spring框架(第一天)

    一. 引言 a) 什么是Spring框架?(spring官网:www.springsource.org) 3.x  不提供第三发依赖jar 目前已经到了5.x版本. Spring轻量级(代码入侵性小) ...

  2. TP5关联模型出现疑问,待解决

    一对一: hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型'); 说明:其他模型一对一都可以按照手册说明写,但上面代码只能这么写才能执行正确答案, 如果是 / ...

  3. 前端常用场景总结CSS/JS/插件(实用篇更新中...)

    <div class="box box1"> <span>垂直居中</span> </div> .box1{ display: ta ...

  4. Java基础系列(19)- Switch结构

    package struct; public class SwitchDemo01 { //case穿透 //switch 匹配一个具体的值 public static void main(Strin ...

  5. Xshell和Xftp - 下载安装

    简介 Xshell 实际工作运用:连接Linux Xftp 实际工作运用:传输文件到Linux系统 下载安装 三连后评论区留言私发,此贴长期有效!!!

  6. python编码问题:UnicodeDecodeError: 'gbk' codec can't decode

    在获取yaml文件数据时,提示:UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 2: illegal multib ...

  7. 国庆出游神器:魔幻黑科技换天造物,让vlog秒变科幻大片!

    摘要:国庆旅游景点人太多,拍出来的照片全是人人人.车车车,该怎么办?不妨试试这个黑科技,让你的出游vlog秒变科幻大片. 本文分享自华为云社区<国庆出游神器,魔幻黑科技换天造物,让vlog秒变科 ...

  8. Java面向对象/面向过程

    面向过程 第一步做啥 第二部做啥 依此类推 层层递进 比如要弄一辆自行车 面向过程 搞车轮子 车链子 一步步来 如果有个地方坏了 说不定整个车都要拆了重新弄 扩展性很差 维护性也很差 速度比较快 面向 ...

  9. Unity——伤害数字显示HUD

    伤害数字显示HUD 游戏中收到伤害掉血,会有飘动的伤害数值: 可以使用OnGUI中GUI.Label来实现: 可自定义字体,颜色,大小等: 如果需要更好看的数字特效,可以手动添加: 普通字体不够好看可 ...

  10. 【UE4 C++】抛物线路径、发射轨道相关

    基于UGameplayStatics Blueprint_PredictProjectilePath_ByObjectType 根据 Object Type,算出抛物线的点集合和检测结果 static ...