当前位置: 首页 > wzjs >正文

安居客网站是用什么程序做的做网站用什么软件

安居客网站是用什么程序做的,做网站用什么软件,ip网域名查询,单页的网站怎么做一、异常类型分类 类型说明示例内置预定义异常Oracle已命名异常(如NO_DATA_FOUND)查询无数据时触发内置非预定义异常未命名的Oracle错误(需用PRAGMA EXCEPTION_INIT关联)ORA-02290(违反检查约束)自定义异常…

一、异常类型分类

类型说明示例
内置预定义异常Oracle已命名异常(如NO_DATA_FOUND)查询无数据时触发
内置非预定义异常未命名的Oracle错误(需用PRAGMA EXCEPTION_INIT关联)ORA-02290(违反检查约束)
自定义异常用户定义的业务逻辑异常数据校验失败时手动抛出

二、异常处理语法
1. 基本结构

DECLARE-- 声明自定义异常custom_exception EXCEPTION;-- 绑定错误代码到非预定义异常PRAGMA EXCEPTION_INIT(custom_exception, -20001);
BEGIN-- 业务逻辑IF 条件 THENRAISE custom_exception; -- 手动抛出异常END IF;
EXCEPTIONWHEN custom_exception THENDBMS_OUTPUT.PUT_LINE('自定义异常触发');WHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('数据未找到');WHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('错误代码: ' || SQLCODE);DBMS_OUTPUT.PUT_LINE('错误信息: ' || SQLERRM);
END;

三、异常语法
1. 自定义异常
步骤说明:

①声明异常:

DECLAREinvalid_salary EXCEPTION;

②关联错误代码(可选):

PRAGMA EXCEPTION_INIT(invalid_salary, -20001);

③抛出异常:

IF salary < 0 THENRAISE invalid_salary;
END IF;

④捕获处理:

EXCEPTIONWHEN invalid_salary THENDBMS_OUTPUT.PUT_LINE('薪资不能为负数');

2. 内置异常处理
常用预定义异常:
NO_DATA_FOUND: SELECT未找到数据
TOO_MANY_ROWS: SELECT返回多行数据
ZERO_DIVIDE: 除数为零
DUP_VAL_ON_INDEX: 唯一索引冲突

-- 示例:
BEGINSELECT * INTO emp_rec FROM emp WHERE emp_id = 999;
EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('员工ID不存在');WHEN TOO_MANY_ROWS THENDBMS_OUTPUT.PUT_LINE('返回多行数据');
END;

3. 嵌套异常处理
结构示例:

DECLAREouter_exception EXCEPTION;
BEGIN<<inner_block>>DECLAREinner_exception EXCEPTION;BEGINRAISE inner_exception;EXCEPTIONWHEN inner_exception THENDBMS_OUTPUT.PUT_LINE('内部异常已处理');RAISE outer_exception; -- 抛出到外层END inner_block;
EXCEPTIONWHEN outer_exception THENDBMS_OUTPUT.PUT_LINE('外部捕获到异常');
END;

详细实例:

DECLARE-- 定义变量和异常v_employee_id employees.employee_id%TYPE := 100;v_salary employees.salary%TYPE;e_negative_salary EXCEPTION; -- 自定义异常:工资为负PRAGMA EXCEPTION_INIT(e_negative_salary, -20001); -- 绑定错误代码
BEGIN-- 外层块BEGIN -- 内层块开始-- 尝试获取员工工资SELECT salary INTO v_salary FROM employees WHERE employee_id = v_employee_id;-- 模拟业务逻辑:检查工资有效性IF v_salary < 0 THENRAISE_APPLICATION_ERROR(-20001, '工资不能为负数'); -- 触发自定义异常END IF;DBMS_OUTPUT.PUT_LINE('内层块:工资处理成功。');EXCEPTION -- 内层异常处理WHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('内层块:员工ID ' || v_employee_id || ' 不存在。');RAISE; -- 重新抛出到外层WHEN e_negative_salary THENDBMS_OUTPUT.PUT_LINE('内层块:异常 - ' || SQLERRM);-- 此处可添加恢复逻辑,如设置默认工资v_salary := 0;DBMS_OUTPUT.PUT_LINE('内层块:工资已重置为0。');END; -- 内层块结束-- 外层业务逻辑(内层未异常终止时执行)DBMS_OUTPUT.PUT_LINE('外层块:更新后工资为 ' || v_salary);EXCEPTION -- 外层异常处理WHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('外层块:错误 - 指定员工不存在。');WHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('外层块:未知错误 - ' || SQLERRM);ROLLBACK; -- 示例事务回滚
END;

嵌套结构:

  • 内层块: 处理具体数据库操作(如查询、业务验证),捕获NO_DATA_FOUND(预定义)和自定义异常。
  • 外层块: 处理内层未处理的异常,执行后续业务逻辑或全局错误处理。

异常传播:

  • 内层处理并解决: 如e_negative_salary异常被捕获后重置工资,程序继续执行外层代码。
  • 内层重新抛出: NO_DATA_FOUND在内层处理后通过RAISE传递到外层,触发外层对应处理程序。

自定义异常:

  • 使用RAISE_APPLICATION_ERROR抛出并关联错误代码,PRAGMA
    EXCEPTION_INIT将自定义异常绑定到特定错误号。

事务控制:

  • 外层异常处理中可包含ROLLBACK,确保数据一致性(根据实际业务需求调整)。

嵌套规则:

  • 内部块未处理的异常会自动传递到外层块
  • 使用RAISE可手动将异常传递到上层

四、其他处理
1. 错误日志记录

EXCEPTIONWHEN OTHERS THENINSERT INTO error_log (code, message, time)VALUES (SQLCODE, SQLERRM, SYSDATE);COMMIT;RAISE; -- 继续向上层传递异常
END;

2. 动态错误消息

RAISE_APPLICATION_ERROR(-20001, '订单 ' || order_id || ' 状态无效');

3. 异常传播控制

BEGIN-- 业务逻辑
EXCEPTIONWHEN OTHERS THENIF SQLCODE = -2290 THENDBMS_OUTPUT.PUT_LINE('约束违反');ELSERAISE; -- 继续传播未明确处理的异常END IF;
END;

五、总结
优先级处理:

EXCEPTIONWHEN NO_DATA_FOUND THEN ... -- 特定异常在前WHEN OTHERS THEN ...        -- 通用处理在后

事务控制:

BEGINSAVEPOINT sp1;-- DML操作
EXCEPTIONWHEN OTHERS THENROLLBACK TO sp1;RAISE;
END;

错误代码规范:

  • 自定义错误代码范围:-20000 到 -20999
  • 统一错误消息格式

通过合理使用异常处理机制,可显著提升Oracle程序的健壮性。建议在复杂业务逻辑中优先定义清晰的异常处理策略。

http://www.dtcms.com/wzjs/125503.html

相关文章:

  • 想在淘宝上找网站建设的靠谱吗?网站做优化
  • 无锡有哪些软件开发的公司网站优化工具
  • 网站建设衤金手指花总十五嘉兴百度快照优化排名
  • 有的网站打不开是什么原因呢友情链接
  • 企业网站网址友情链接查询友情链接检测
  • 做电影资讯网站算侵权吗同城引流用什么软件
  • 比较好看的网站网络seo是什么意思
  • 安徽省建设厅到底哪个网站好的产品怎么推广语言
  • javaweb是不是做网站的关键词seo教程
  • 沈阳网站建设推广全能优化大师
  • 网站建设的公司第七页项目外包平台
  • 成都php网站建设工程师产品推广文案范例
  • 把名字设计成logo免费seo关键词优化服务
  • 西宁房地产网站建设自媒体人15种赚钱方法
  • 做爰全过程免费视频网站网址制作
  • 法治与安全做讲座网站高质量软文
  • 有哪些网站做的比较好看的图片百度金融
  • 做网站的工具怎么使用微信营销系统
  • 台州网站定制建立网站的基本流程
  • 网站建设页面美工什么是白帽seo
  • 微官网制作一般多少钱上海百度推广优化排名
  • 有哪些免费推广网站seo查询官网
  • 下载正品官方网站seo基础知识考试
  • 天津网站建设维护做好网络推广
  • 南宁设计网站百度搜索引擎广告投放
  • 58同城机械加工订单淘宝seo是指什么
  • 饿了吗网站做的比较好的地方百度竞价账户
  • 官方网站建设费用关键词优化公司排行
  • 泰州模板建站代理江苏网络推广公司
  • 全屏类网站建设广告投放收费标准