graph TD subgraph getArea 方法 GA_A["开始 getArea(a, b, c)"] --> GA_B{判断 a+b>c 且 a+c>b 且 b+c>a}; GA_B -- false --> GA_C[抛出 IllegalArgumentException “无法构成三角形”]; GA_B -- true --> GA_D["计算 (a+b+c)/2"]; GA_D --> GA_E[返回结果]; GA_C --> GA_E; end subgraph main 方法 M_A[开始 main] --> M_B[创建 SafeTriangle 对象 triangle]; M_B --> M_C{try 块}; M_C --> M_D[打印 “请输入三角形的三条边长:”]; M_D --> M_E[创建 Scanner 对象]; M_E --> M_F[读取一行输入]; M_F --> M_G[按空格分割输入为 parts 数组]; M_G --> M_H{判断 parts.length < 3}; M_H -- true --> M_I[抛出 IllegalArgumentException “请输入三条边长”]; M_H -- false --> M_J[初始化 a, b, c = 0]; M_J --> M_K{内部 try 块}; M_K --> M_L["解析 parts[0] 为 a"]; M_L --> M_M["解析 parts[1] 为 b"]; M_M --> M_N["解析 parts[2] 为 c"]; M_N --> M_O["调用 triangle.getArea(a, b, c) 获取面积 area"]; M_O --> M_P[打印 “三角形面积: ” + area]; M_P --> M_Q[结束 try 块]; M_K -- NumberFormatException --> M_R[捕获 NumberFormatException]; M_R --> M_S[抛出 IllegalArgumentException “边长必须是数字”]; M_S --> M_T{捕获外部 IllegalArgumentException}; M_I --> M_T; M_Q --> M_U[结束 main]; M_T --> M_V["打印异常信息 e.getMessage()"]; M_V --> M_U; end