22.1.异常介绍

  • Java语言中,将程序执行中发生的不正常情况称为 “异常” (开发过程中的语法错误和逻辑错误不是异常)
  • 执行过程中所发生的异常事件分为两大类:
  1. Error:Java虚拟机无法解决的严重问题。例如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError [栈溢出] 和 OOM(out of memory) [内存不足] ,Error 是严重错误,程序会崩溃
  2. Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:空指针访问,试图读取不存在的文件,网络连接中断等等

Exception 分为两大类:运行时异常 [程序运行时,发生的异常] 和 编译时异常 [编程时,编译器检查出的异常]

22.2.异常体系图一览

#mermaid-svg-2VdAWz2NUDBdipaP .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-2VdAWz2NUDBdipaP .label text{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .node rect,#mermaid-svg-2VdAWz2NUDBdipaP .node circle,#mermaid-svg-2VdAWz2NUDBdipaP .node ellipse,#mermaid-svg-2VdAWz2NUDBdipaP .node polygon,#mermaid-svg-2VdAWz2NUDBdipaP .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-2VdAWz2NUDBdipaP .node .label{text-align:center;fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .node.clickable{cursor:pointer}#mermaid-svg-2VdAWz2NUDBdipaP .arrowheadPath{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-2VdAWz2NUDBdipaP .flowchart-link{stroke:#333;fill:none}#mermaid-svg-2VdAWz2NUDBdipaP .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-2VdAWz2NUDBdipaP .edgeLabel rect{opacity:0.9}#mermaid-svg-2VdAWz2NUDBdipaP .edgeLabel span{color:#333}#mermaid-svg-2VdAWz2NUDBdipaP .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-2VdAWz2NUDBdipaP .cluster text{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-2VdAWz2NUDBdipaP .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-2VdAWz2NUDBdipaP text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-2VdAWz2NUDBdipaP .actor-line{stroke:grey}#mermaid-svg-2VdAWz2NUDBdipaP .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-2VdAWz2NUDBdipaP .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-2VdAWz2NUDBdipaP #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-2VdAWz2NUDBdipaP .sequenceNumber{fill:#fff}#mermaid-svg-2VdAWz2NUDBdipaP #sequencenumber{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP #crosshead path{fill:#333;stroke:#333}#mermaid-svg-2VdAWz2NUDBdipaP .messageText{fill:#333;stroke:#333}#mermaid-svg-2VdAWz2NUDBdipaP .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-2VdAWz2NUDBdipaP .labelText,#mermaid-svg-2VdAWz2NUDBdipaP .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-2VdAWz2NUDBdipaP .loopText,#mermaid-svg-2VdAWz2NUDBdipaP .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-2VdAWz2NUDBdipaP .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-2VdAWz2NUDBdipaP .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-2VdAWz2NUDBdipaP .noteText,#mermaid-svg-2VdAWz2NUDBdipaP .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-2VdAWz2NUDBdipaP .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-2VdAWz2NUDBdipaP .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-2VdAWz2NUDBdipaP .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-2VdAWz2NUDBdipaP .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP .section{stroke:none;opacity:0.2}#mermaid-svg-2VdAWz2NUDBdipaP .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-2VdAWz2NUDBdipaP .section2{fill:#fff400}#mermaid-svg-2VdAWz2NUDBdipaP .section1,#mermaid-svg-2VdAWz2NUDBdipaP .section3{fill:#fff;opacity:0.2}#mermaid-svg-2VdAWz2NUDBdipaP .sectionTitle0{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .sectionTitle1{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .sectionTitle2{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .sectionTitle3{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-2VdAWz2NUDBdipaP .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP .grid path{stroke-width:0}#mermaid-svg-2VdAWz2NUDBdipaP .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-2VdAWz2NUDBdipaP .task{stroke-width:2}#mermaid-svg-2VdAWz2NUDBdipaP .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP .taskText:not([font-size]){font-size:11px}#mermaid-svg-2VdAWz2NUDBdipaP .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-2VdAWz2NUDBdipaP .task.clickable{cursor:pointer}#mermaid-svg-2VdAWz2NUDBdipaP .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-2VdAWz2NUDBdipaP .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-2VdAWz2NUDBdipaP .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-2VdAWz2NUDBdipaP .taskText0,#mermaid-svg-2VdAWz2NUDBdipaP .taskText1,#mermaid-svg-2VdAWz2NUDBdipaP .taskText2,#mermaid-svg-2VdAWz2NUDBdipaP .taskText3{fill:#fff}#mermaid-svg-2VdAWz2NUDBdipaP .task0,#mermaid-svg-2VdAWz2NUDBdipaP .task1,#mermaid-svg-2VdAWz2NUDBdipaP .task2,#mermaid-svg-2VdAWz2NUDBdipaP .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-2VdAWz2NUDBdipaP .taskTextOutside0,#mermaid-svg-2VdAWz2NUDBdipaP .taskTextOutside2{fill:#000}#mermaid-svg-2VdAWz2NUDBdipaP .taskTextOutside1,#mermaid-svg-2VdAWz2NUDBdipaP .taskTextOutside3{fill:#000}#mermaid-svg-2VdAWz2NUDBdipaP .active0,#mermaid-svg-2VdAWz2NUDBdipaP .active1,#mermaid-svg-2VdAWz2NUDBdipaP .active2,#mermaid-svg-2VdAWz2NUDBdipaP .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-2VdAWz2NUDBdipaP .activeText0,#mermaid-svg-2VdAWz2NUDBdipaP .activeText1,#mermaid-svg-2VdAWz2NUDBdipaP .activeText2,#mermaid-svg-2VdAWz2NUDBdipaP .activeText3{fill:#000 !important}#mermaid-svg-2VdAWz2NUDBdipaP .done0,#mermaid-svg-2VdAWz2NUDBdipaP .done1,#mermaid-svg-2VdAWz2NUDBdipaP .done2,#mermaid-svg-2VdAWz2NUDBdipaP .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-2VdAWz2NUDBdipaP .doneText0,#mermaid-svg-2VdAWz2NUDBdipaP .doneText1,#mermaid-svg-2VdAWz2NUDBdipaP .doneText2,#mermaid-svg-2VdAWz2NUDBdipaP .doneText3{fill:#000 !important}#mermaid-svg-2VdAWz2NUDBdipaP .crit0,#mermaid-svg-2VdAWz2NUDBdipaP .crit1,#mermaid-svg-2VdAWz2NUDBdipaP .crit2,#mermaid-svg-2VdAWz2NUDBdipaP .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-2VdAWz2NUDBdipaP .activeCrit0,#mermaid-svg-2VdAWz2NUDBdipaP .activeCrit1,#mermaid-svg-2VdAWz2NUDBdipaP .activeCrit2,#mermaid-svg-2VdAWz2NUDBdipaP .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-2VdAWz2NUDBdipaP .doneCrit0,#mermaid-svg-2VdAWz2NUDBdipaP .doneCrit1,#mermaid-svg-2VdAWz2NUDBdipaP .doneCrit2,#mermaid-svg-2VdAWz2NUDBdipaP .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-2VdAWz2NUDBdipaP .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-2VdAWz2NUDBdipaP .milestoneText{font-style:italic}#mermaid-svg-2VdAWz2NUDBdipaP .doneCritText0,#mermaid-svg-2VdAWz2NUDBdipaP .doneCritText1,#mermaid-svg-2VdAWz2NUDBdipaP .doneCritText2,#mermaid-svg-2VdAWz2NUDBdipaP .doneCritText3{fill:#000 !important}#mermaid-svg-2VdAWz2NUDBdipaP .activeCritText0,#mermaid-svg-2VdAWz2NUDBdipaP .activeCritText1,#mermaid-svg-2VdAWz2NUDBdipaP .activeCritText2,#mermaid-svg-2VdAWz2NUDBdipaP .activeCritText3{fill:#000 !important}#mermaid-svg-2VdAWz2NUDBdipaP .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-2VdAWz2NUDBdipaP g.classGroup text .title{font-weight:bolder}#mermaid-svg-2VdAWz2NUDBdipaP g.clickable{cursor:pointer}#mermaid-svg-2VdAWz2NUDBdipaP g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-2VdAWz2NUDBdipaP g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-2VdAWz2NUDBdipaP .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-2VdAWz2NUDBdipaP .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-2VdAWz2NUDBdipaP .dashed-line{stroke-dasharray:3}#mermaid-svg-2VdAWz2NUDBdipaP #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP .commit-id,#mermaid-svg-2VdAWz2NUDBdipaP .commit-msg,#mermaid-svg-2VdAWz2NUDBdipaP .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-2VdAWz2NUDBdipaP g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-2VdAWz2NUDBdipaP g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-2VdAWz2NUDBdipaP g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-2VdAWz2NUDBdipaP .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-2VdAWz2NUDBdipaP .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-2VdAWz2NUDBdipaP .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-2VdAWz2NUDBdipaP .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-2VdAWz2NUDBdipaP .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-2VdAWz2NUDBdipaP .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-2VdAWz2NUDBdipaP .edgeLabel text{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-2VdAWz2NUDBdipaP .node circle.state-start{fill:black;stroke:black}#mermaid-svg-2VdAWz2NUDBdipaP .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-2VdAWz2NUDBdipaP #statediagram-barbEnd{fill:#9370db}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-state .divider{stroke:#9370db}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-2VdAWz2NUDBdipaP .note-edge{stroke-dasharray:5}#mermaid-svg-2VdAWz2NUDBdipaP .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-2VdAWz2NUDBdipaP .error-icon{fill:#522}#mermaid-svg-2VdAWz2NUDBdipaP .error-text{fill:#522;stroke:#522}#mermaid-svg-2VdAWz2NUDBdipaP .edge-thickness-normal{stroke-width:2px}#mermaid-svg-2VdAWz2NUDBdipaP .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-2VdAWz2NUDBdipaP .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-2VdAWz2NUDBdipaP .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-2VdAWz2NUDBdipaP .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-2VdAWz2NUDBdipaP .marker{fill:#333}#mermaid-svg-2VdAWz2NUDBdipaP .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-2VdAWz2NUDBdipaP {color: rgba(0, 0, 0, 0.75);font: ;}

编译异常
运行异常
Java源程序
字节码文件
在内存中加载,运行类
#mermaid-svg-5qTOhvW6uvEdJ9F1 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .label text{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .node rect,#mermaid-svg-5qTOhvW6uvEdJ9F1 .node circle,#mermaid-svg-5qTOhvW6uvEdJ9F1 .node ellipse,#mermaid-svg-5qTOhvW6uvEdJ9F1 .node polygon,#mermaid-svg-5qTOhvW6uvEdJ9F1 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .node .label{text-align:center;fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .node.clickable{cursor:pointer}#mermaid-svg-5qTOhvW6uvEdJ9F1 .arrowheadPath{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edgeLabel rect{opacity:0.9}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edgeLabel span{color:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .cluster text{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-5qTOhvW6uvEdJ9F1 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-5qTOhvW6uvEdJ9F1 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-5qTOhvW6uvEdJ9F1 .actor-line{stroke:grey}#mermaid-svg-5qTOhvW6uvEdJ9F1 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .sequenceNumber{fill:#fff}#mermaid-svg-5qTOhvW6uvEdJ9F1 #sequencenumber{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .messageText{fill:#333;stroke:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-5qTOhvW6uvEdJ9F1 .labelText,#mermaid-svg-5qTOhvW6uvEdJ9F1 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-5qTOhvW6uvEdJ9F1 .loopText,#mermaid-svg-5qTOhvW6uvEdJ9F1 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-5qTOhvW6uvEdJ9F1 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-5qTOhvW6uvEdJ9F1 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-5qTOhvW6uvEdJ9F1 .noteText,#mermaid-svg-5qTOhvW6uvEdJ9F1 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-5qTOhvW6uvEdJ9F1 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-5qTOhvW6uvEdJ9F1 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-5qTOhvW6uvEdJ9F1 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-5qTOhvW6uvEdJ9F1 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .section{stroke:none;opacity:0.2}#mermaid-svg-5qTOhvW6uvEdJ9F1 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .section2{fill:#fff400}#mermaid-svg-5qTOhvW6uvEdJ9F1 .section1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .section3{fill:#fff;opacity:0.2}#mermaid-svg-5qTOhvW6uvEdJ9F1 .sectionTitle0{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .sectionTitle1{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .sectionTitle2{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .sectionTitle3{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-5qTOhvW6uvEdJ9F1 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .grid path{stroke-width:0}#mermaid-svg-5qTOhvW6uvEdJ9F1 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .task{stroke-width:2}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskText:not([font-size]){font-size:11px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .task.clickable{cursor:pointer}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskText0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskText1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskText2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskText3{fill:#fff}#mermaid-svg-5qTOhvW6uvEdJ9F1 .task0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .task1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .task2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskTextOutside0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskTextOutside2{fill:#000}#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskTextOutside1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .taskTextOutside3{fill:#000}#mermaid-svg-5qTOhvW6uvEdJ9F1 .active0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .active1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .active2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeText0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeText1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeText2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeText3{fill:#000 !important}#mermaid-svg-5qTOhvW6uvEdJ9F1 .done0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .done1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .done2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneText0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneText1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneText2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneText3{fill:#000 !important}#mermaid-svg-5qTOhvW6uvEdJ9F1 .crit0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .crit1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .crit2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeCrit0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeCrit1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeCrit2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneCrit0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneCrit1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneCrit2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-5qTOhvW6uvEdJ9F1 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .milestoneText{font-style:italic}#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneCritText0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneCritText1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneCritText2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .doneCritText3{fill:#000 !important}#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeCritText0,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeCritText1,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeCritText2,#mermaid-svg-5qTOhvW6uvEdJ9F1 .activeCritText3{fill:#000 !important}#mermaid-svg-5qTOhvW6uvEdJ9F1 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.classGroup text .title{font-weight:bolder}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.clickable{cursor:pointer}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-5qTOhvW6uvEdJ9F1 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-5qTOhvW6uvEdJ9F1 .dashed-line{stroke-dasharray:3}#mermaid-svg-5qTOhvW6uvEdJ9F1 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 .commit-id,#mermaid-svg-5qTOhvW6uvEdJ9F1 .commit-msg,#mermaid-svg-5qTOhvW6uvEdJ9F1 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-5qTOhvW6uvEdJ9F1 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-5qTOhvW6uvEdJ9F1 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-5qTOhvW6uvEdJ9F1 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-5qTOhvW6uvEdJ9F1 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edgeLabel text{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5qTOhvW6uvEdJ9F1 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-5qTOhvW6uvEdJ9F1 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-5qTOhvW6uvEdJ9F1 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-5qTOhvW6uvEdJ9F1 .note-edge{stroke-dasharray:5}#mermaid-svg-5qTOhvW6uvEdJ9F1 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-5qTOhvW6uvEdJ9F1 .error-icon{fill:#522}#mermaid-svg-5qTOhvW6uvEdJ9F1 .error-text{fill:#522;stroke:#522}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-5qTOhvW6uvEdJ9F1 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-5qTOhvW6uvEdJ9F1 .marker{fill:#333}#mermaid-svg-5qTOhvW6uvEdJ9F1 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-5qTOhvW6uvEdJ9F1 {color: rgba(0, 0, 0, 0.75);font: ;}

Throwable
Serializable
Object
Error
Exception
StackOverflowError
OutOfMemoryError
RuntimeException
FileNotFoundException
ClassNotFoundException
NullPointerException
ArithmeticException
ArrayIndexOutOfBoundsException
ClassCastException
NumberFormatException

22.3.常见的运行时异常

  1. NullPointerException:空指针异常
    当应用程序试图在需要对象的地方使用null时,抛出该异常
  2. ArithmeticException:数学运算异常
    当出现异常的运算条件时,抛出此异常。例如,一个整数 “除以零” 时,抛出此类的异常
  3. ArrayIndexOutOfBoundsException:数组下标越界异常
    用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引
  4. ClassCastException:类型转换异常
    当试图将对象强制转换为不是实例的子类时,抛出该异常。例如:向下转型
  5. NumberFormatException:数字格式不正确异常
    当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。例如:
String name = "奥利给,冲冲冲";
int num = Integer.parseInt(name);
// 抛出异常

22.4.编译异常

  • 介绍
    编译异常是指在编译期间,就必须处理的异常,否则代码不能通过编译
  • 常见的编译异常
    SQLException:操作数据库时,查询表可能发生异常
    IOException:操作文件时,发生的异常
    FileNotFoundException:当操作一个不存在的文件时,发生异常
    ClassNotFoundException:加载类,而该类不存在时,异常
    EOFException:操作文件,到文件末尾,发生异常
    IllegalArguementException:参数异常

22.5.异常处理

  • 基本介绍
    异常处理就是当异常发生时,对异常处理的方式
  • 异常处理的方式
  1. try-catch-finally
    程序员在代码中捕获发生的异常,自行处理
try {//代码/可能有异常
} catch(Exception e) {//捕获到异常
// 1.当异常发生时
// 2.系统将异常封装成Exception对象 e,传递给 catch
// 3.得到异常对象后,自定义处理
// 如果没有发生异常,catch代码块不执行
} finally {// 1.不管try代码块是否有异常发生,始终要执行fianlly
// 2.通常将释放资源的代码,放在finally
}
  1. throws
    将发生的异常抛出,交给调用者来处理,(可以一直往上层抛) 最顶级的处理者就是JVM
throws 处理机制图
  1. try-catch-finallythrows 二选一
  2. 如果程序员,没有显示是处理异常,默认throws
#mermaid-svg-R1yapo65NOnoZQG5 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-R1yapo65NOnoZQG5 .label text{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .node rect,#mermaid-svg-R1yapo65NOnoZQG5 .node circle,#mermaid-svg-R1yapo65NOnoZQG5 .node ellipse,#mermaid-svg-R1yapo65NOnoZQG5 .node polygon,#mermaid-svg-R1yapo65NOnoZQG5 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-R1yapo65NOnoZQG5 .node .label{text-align:center;fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .node.clickable{cursor:pointer}#mermaid-svg-R1yapo65NOnoZQG5 .arrowheadPath{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-R1yapo65NOnoZQG5 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-R1yapo65NOnoZQG5 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-R1yapo65NOnoZQG5 .edgeLabel rect{opacity:0.9}#mermaid-svg-R1yapo65NOnoZQG5 .edgeLabel span{color:#333}#mermaid-svg-R1yapo65NOnoZQG5 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-R1yapo65NOnoZQG5 .cluster text{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-R1yapo65NOnoZQG5 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-R1yapo65NOnoZQG5 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-R1yapo65NOnoZQG5 .actor-line{stroke:grey}#mermaid-svg-R1yapo65NOnoZQG5 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-R1yapo65NOnoZQG5 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-R1yapo65NOnoZQG5 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-R1yapo65NOnoZQG5 .sequenceNumber{fill:#fff}#mermaid-svg-R1yapo65NOnoZQG5 #sequencenumber{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-R1yapo65NOnoZQG5 .messageText{fill:#333;stroke:#333}#mermaid-svg-R1yapo65NOnoZQG5 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-R1yapo65NOnoZQG5 .labelText,#mermaid-svg-R1yapo65NOnoZQG5 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-R1yapo65NOnoZQG5 .loopText,#mermaid-svg-R1yapo65NOnoZQG5 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-R1yapo65NOnoZQG5 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-R1yapo65NOnoZQG5 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-R1yapo65NOnoZQG5 .noteText,#mermaid-svg-R1yapo65NOnoZQG5 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-R1yapo65NOnoZQG5 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-R1yapo65NOnoZQG5 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-R1yapo65NOnoZQG5 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-R1yapo65NOnoZQG5 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 .section{stroke:none;opacity:0.2}#mermaid-svg-R1yapo65NOnoZQG5 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-R1yapo65NOnoZQG5 .section2{fill:#fff400}#mermaid-svg-R1yapo65NOnoZQG5 .section1,#mermaid-svg-R1yapo65NOnoZQG5 .section3{fill:#fff;opacity:0.2}#mermaid-svg-R1yapo65NOnoZQG5 .sectionTitle0{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .sectionTitle1{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .sectionTitle2{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .sectionTitle3{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-R1yapo65NOnoZQG5 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 .grid path{stroke-width:0}#mermaid-svg-R1yapo65NOnoZQG5 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-R1yapo65NOnoZQG5 .task{stroke-width:2}#mermaid-svg-R1yapo65NOnoZQG5 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 .taskText:not([font-size]){font-size:11px}#mermaid-svg-R1yapo65NOnoZQG5 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-R1yapo65NOnoZQG5 .task.clickable{cursor:pointer}#mermaid-svg-R1yapo65NOnoZQG5 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-R1yapo65NOnoZQG5 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-R1yapo65NOnoZQG5 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-R1yapo65NOnoZQG5 .taskText0,#mermaid-svg-R1yapo65NOnoZQG5 .taskText1,#mermaid-svg-R1yapo65NOnoZQG5 .taskText2,#mermaid-svg-R1yapo65NOnoZQG5 .taskText3{fill:#fff}#mermaid-svg-R1yapo65NOnoZQG5 .task0,#mermaid-svg-R1yapo65NOnoZQG5 .task1,#mermaid-svg-R1yapo65NOnoZQG5 .task2,#mermaid-svg-R1yapo65NOnoZQG5 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-R1yapo65NOnoZQG5 .taskTextOutside0,#mermaid-svg-R1yapo65NOnoZQG5 .taskTextOutside2{fill:#000}#mermaid-svg-R1yapo65NOnoZQG5 .taskTextOutside1,#mermaid-svg-R1yapo65NOnoZQG5 .taskTextOutside3{fill:#000}#mermaid-svg-R1yapo65NOnoZQG5 .active0,#mermaid-svg-R1yapo65NOnoZQG5 .active1,#mermaid-svg-R1yapo65NOnoZQG5 .active2,#mermaid-svg-R1yapo65NOnoZQG5 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-R1yapo65NOnoZQG5 .activeText0,#mermaid-svg-R1yapo65NOnoZQG5 .activeText1,#mermaid-svg-R1yapo65NOnoZQG5 .activeText2,#mermaid-svg-R1yapo65NOnoZQG5 .activeText3{fill:#000 !important}#mermaid-svg-R1yapo65NOnoZQG5 .done0,#mermaid-svg-R1yapo65NOnoZQG5 .done1,#mermaid-svg-R1yapo65NOnoZQG5 .done2,#mermaid-svg-R1yapo65NOnoZQG5 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-R1yapo65NOnoZQG5 .doneText0,#mermaid-svg-R1yapo65NOnoZQG5 .doneText1,#mermaid-svg-R1yapo65NOnoZQG5 .doneText2,#mermaid-svg-R1yapo65NOnoZQG5 .doneText3{fill:#000 !important}#mermaid-svg-R1yapo65NOnoZQG5 .crit0,#mermaid-svg-R1yapo65NOnoZQG5 .crit1,#mermaid-svg-R1yapo65NOnoZQG5 .crit2,#mermaid-svg-R1yapo65NOnoZQG5 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-R1yapo65NOnoZQG5 .activeCrit0,#mermaid-svg-R1yapo65NOnoZQG5 .activeCrit1,#mermaid-svg-R1yapo65NOnoZQG5 .activeCrit2,#mermaid-svg-R1yapo65NOnoZQG5 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-R1yapo65NOnoZQG5 .doneCrit0,#mermaid-svg-R1yapo65NOnoZQG5 .doneCrit1,#mermaid-svg-R1yapo65NOnoZQG5 .doneCrit2,#mermaid-svg-R1yapo65NOnoZQG5 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-R1yapo65NOnoZQG5 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-R1yapo65NOnoZQG5 .milestoneText{font-style:italic}#mermaid-svg-R1yapo65NOnoZQG5 .doneCritText0,#mermaid-svg-R1yapo65NOnoZQG5 .doneCritText1,#mermaid-svg-R1yapo65NOnoZQG5 .doneCritText2,#mermaid-svg-R1yapo65NOnoZQG5 .doneCritText3{fill:#000 !important}#mermaid-svg-R1yapo65NOnoZQG5 .activeCritText0,#mermaid-svg-R1yapo65NOnoZQG5 .activeCritText1,#mermaid-svg-R1yapo65NOnoZQG5 .activeCritText2,#mermaid-svg-R1yapo65NOnoZQG5 .activeCritText3{fill:#000 !important}#mermaid-svg-R1yapo65NOnoZQG5 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-R1yapo65NOnoZQG5 g.classGroup text .title{font-weight:bolder}#mermaid-svg-R1yapo65NOnoZQG5 g.clickable{cursor:pointer}#mermaid-svg-R1yapo65NOnoZQG5 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-R1yapo65NOnoZQG5 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-R1yapo65NOnoZQG5 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-R1yapo65NOnoZQG5 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-R1yapo65NOnoZQG5 .dashed-line{stroke-dasharray:3}#mermaid-svg-R1yapo65NOnoZQG5 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 .commit-id,#mermaid-svg-R1yapo65NOnoZQG5 .commit-msg,#mermaid-svg-R1yapo65NOnoZQG5 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-R1yapo65NOnoZQG5 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-R1yapo65NOnoZQG5 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-R1yapo65NOnoZQG5 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-R1yapo65NOnoZQG5 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-R1yapo65NOnoZQG5 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-R1yapo65NOnoZQG5 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-R1yapo65NOnoZQG5 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-R1yapo65NOnoZQG5 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-R1yapo65NOnoZQG5 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-R1yapo65NOnoZQG5 .edgeLabel text{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-R1yapo65NOnoZQG5 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-R1yapo65NOnoZQG5 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-R1yapo65NOnoZQG5 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-R1yapo65NOnoZQG5 .note-edge{stroke-dasharray:5}#mermaid-svg-R1yapo65NOnoZQG5 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-R1yapo65NOnoZQG5 .error-icon{fill:#522}#mermaid-svg-R1yapo65NOnoZQG5 .error-text{fill:#522;stroke:#522}#mermaid-svg-R1yapo65NOnoZQG5 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-R1yapo65NOnoZQG5 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-R1yapo65NOnoZQG5 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-R1yapo65NOnoZQG5 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-R1yapo65NOnoZQG5 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-R1yapo65NOnoZQG5 .marker{fill:#333}#mermaid-svg-R1yapo65NOnoZQG5 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-R1yapo65NOnoZQG5 {color: rgba(0, 0, 0, 0.75);font: ;}

throws
throws
throws
JVM //处理异常 1.输出异常信息 2.退出程序
main //try-catch-finally
f1方法 //try-catch-finally
f2方法 抛出异常

22.6.try-catch方式处理异常注意事项

  1. 如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch块
  2. 如果异常没有发生,则顺序执行try的代码块,不会进入到catch
  3. 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等),使用 finally {}
  4. 可以有多个catch 语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,比如 Exception 在后,NullPointerException 在前,如果发生异常,只会匹配一个catch
  5. 可以进行 try-finally 配合使用,这种用法相当于没有捕获异常,因此程序会直接崩掉/退出。
具体实例:

判断输入的数是否为整数

Scanner scanner = new Scanner(System.in);
int num = 0;
String inputStr = "";
while (true) {System.out.println("请输入一个整数:");inputStr = scanner.next();try {num = Integer.parseInt(inputStr);break;} catch (NumberFormatException e) {System.out.println("你输入的不是一个整数");}
}
System.out.println("你输入的值是="+ num);

输出结果

22.7.throws异常处理

  1. 如果一个方法(语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理
  2. 在方法声明中用 throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类
注意事项和使用细节
  1. 对于编译异常,程序中必须处理,比如 try-catch 或者 throws
  2. 对于运行时异常,程序中如果没有处理,默认就是throws的方式处理
  3. 子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型
  4. 在throws过程中,如果有方法 try-catch,就相当于处理异常,就可以不必throws

22.8.自定义异常

  • 基本概念
    当程序中出现了某些并没有在 Throwable 子类中描述处理的错误,这个时候可以自己设计异常类,用于描述该错误信息
  • 自定义异常的步骤
  1. 自定义:自定义异常类名继承 Exception 或 RuntimeException
  2. 如果继承 Exception,属于编译异常
  3. 如果继承 RuntimeException,属于运行异常
例子

自定义一个异常-运行异常

class AgeException extends RuntimeException {public AgeException(String message) {super(message);}
}

要求范围在 18-120 之间,否则抛出一个自定义异常

public static void main(String[] args) {int age = 180;if (!(age >= 18 && age <= 120)) {throw new AgeException("年龄需要在 18~120之间");}System.out.println("你的年龄范围正确");
}

输出结果:

一般情况下,我们自定义异常是继承 RuntimeException,即把自定义做成运行时异常,好处是可以使用默认的处理机制,比较方便

22.9.throws 和 throw 的区别

意义 位置 后面跟的东西
throws 异常处理的一种方式 方法声明处 异常类型
throw 手动生成异常对象的关键字 方法体中 异常对象

22.Java之异常处理(异常介绍,异常体系图一览,运行时异常,编译异常,try-catch方式处理异常,throws异常处理,自定义异常,throws 和 throw 的区别)相关推荐

  1. java运行时异常的特点是什么_Java运行时异常和非运行时异常

    1.Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类.Java中的异常分为两大类:错误Error和异常Exception,Java ...

  2. 【java】Java运行时动态生成类几种方式

    1.概述 转载:Java运行时动态生成类几种方式 这里发现自己不知道的,原来Java 还能自己编译自己,学到了. 最近一个项目中利用规则引擎,提供用户拖拽式的灵活定义规则.这就要求根据数据库数据动态生 ...

  3. java运行时跟编译时的区别,欢迎大家指正

    个人博客地址:https://blog.csdn.net/qq_41907991 关于java运行时及编译时期的区别: 首先我们要了解编译以及运行的概念: 编译就是指,编译器帮你把源码翻译成机器能识别 ...

  4. java运行时异常与一般异常有何异同_JVM | 虚拟机运行时数据区域划分和使用详解...

    引言   我们经常会被问到一个问题是Java和C++有何区别?我们除了能回答一个是面向对象.一个是面向过程编程以外,我们还会从底层内存管理和垃圾收集方面作出比较.   对于C++而言,程序员既要做程序 ...

  5. Effective Java之对可恢复的情况使用受检异常,对编程错误使用运行时异常(五十八)

    java将所有的错误封装为一个对象,其根本父类为Throwable, Throwable有两个子类:Error和Exception. 异常分成三种结构 1.错误:Error是Throwable 的子类 ...

  6. java 异常 中文_Java中所有的运行时异常,带中文解释

    展开全部 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:Negat ...

  7. Java程序员必知必会之JVM运行时数据区

    JVM类加载概述 JVM垃圾回收概述 运行时数据区概述 程序计数器(Program Counter Register) 是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器,指向下一个将要 ...

  8. java slf4j日志级别_java - 在slf4j中设置运行时消息的日志级别 - 堆栈内存溢出

    ===============>>#1 票数:41 已采纳 使用slf4j无法做到这slf4j . 我想,缺少这个功能的原因是,几乎不可能为slf4j构建一个Level类型,它可以有效地映 ...

  9. java runtime类 heap_Java 进阶(一) JVM运行时内存模型

    1.JVM运行时数据区域的划分 a.程序计数器(Program Counter Register) 一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器.每个线程拥有独立的一个计数器,如果 ...

最新文章

  1. 操作无法完成后台打印程序无法运行
  2. Linus:Linux太烂,我要删了它,你们用Windows XP吧!
  3. abaqus中元素过度失真是什么意思_Abaqus三维多晶体脚本建模Voronoi多面体建模
  4. 24c04硬件地址位_一文读懂IP地址和MAC地址有什么区别和联系
  5. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第4章-具有扰动的混沌系统主-从同步
  6. SpringBoot注解自动扫描-底层实现
  7. Controls 属性与继承 TShape 类的小练习
  8. Java创新型模式_java设计模式--创建型模式(一)
  9. Dapp开发教程四 Asch Dapp Dice Game
  10. 几台pc打造超级计算机,324台Mac Pro打造超级计算机
  11. 织梦标签把","逗号改成空格技巧
  12. linux路由内核实现分析(一)----邻居子节点(2)
  13. nuxt webpack配置css,基于nuxt通过webpack配置ant-Design-vue的主题切换配置
  14. appium屏蔽软键盘
  15. Canny提取图像边缘后使用闭运算连接断线
  16. PAT之STL:vector、set、map、stack、queue
  17. ai老师人工智能培训老师计算机视觉老师叶梓:计算机视觉领域的自监督学习模型——MAE-12
  18. VS2015自定义编程背景
  19. pandas警告SettingWithCopyWarning: A value is trying to ...原理和解决方案
  20. 天龙八部手游服务器维护公告,-天龙八部手游-详情页-官方网站-天龙八部官方唯一正版3DMMORPG武侠手游...

热门文章

  1. Unity-地形编辑器-编辑器拓展功能类
  2. Batbot智慧电力云平台,实现一把钥匙能开多把锁
  3. 陀螺世界一键端php源码,陀螺世界源码【运营版】
  4. 用计算机输入输出,计算机输入/输出接口的作用是什么
  5. 如何攻破华信专业版保护卡v5.0.210706.3200,仅供参考
  6. MySQL 命令行工具之 mysqldump 深入研究
  7. c语言中 字母对应的数值,c语言字母对应ascii码 实型数据,与字符型数据
  8. php oa 开发,OA开发文档_开源OA二次开发说明 - PHPOA软件文档 www.phpoa.cn
  9. Head First java——战舰游戏代码
  10. 禁用某盾加密破解、黄盾加密、sdhelper2.exe