LN项目总结---Java中的异常

本文总结了LN项目开发中常见的Java异常及解决方法,包括404、500等HTTP状态码错误,以及nullpointerexception、classnotfoundexception等多种Java运行时异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LN项目一段时间了,第一次使用eclipse开发javaweb application。在调试的过程中不免遇到了很多的错误。看着这么多英文字母,有时候真的感觉很是气愤。怎么老出现这个错误呢。但是当你调试了几个程序以后,就发现其实老出现的也就是那么几个错误。记住它就Ok了。

下面总结一下这次LN开发遇到的java异常和解决办法。

1404


404是一个程序员经常见到的错误。这个错误告我我们,这个路径不存在你找的页面。在LN项目中是出现的主要原因是web.xml文件中没有配置当前servlet的配置信息。

如下

<servlet> <servlet-name>DAaduitServlet</servlet-name> <servlet-class>DAaduitServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DAaduitServlet</servlet-name> <url-pattern>/DAaduitServlet</url-pattern> </servlet-mapping>

2500


这个也是我们比较属性的一个错误类型。

他的主要原因就是目标类,也就是这个过程中调用的代码有错误。或者出现了需要的信息为空的情况。

解决办法就是打印每个传递的参数值,看看那个参数为空。判断是否是界面没有发送出去数据。

---界面没有发送出数据原因

要发送的数据不在表单(<form></form>)包含的范围内。关于这个有这么一个图片大家一看就明白了。


这个图片讲述了LN项目中我们经常遇到的一些知识。如表单条。提交方式,action用途等。

还有其他一些java常见错误我总结了一下,作为以后的参考:


1.java.lang.nullpointerexception

这个异常大家肯定都经常遇到,异常的解释是&quot;程序遇上了空指针&quot;,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)

2.java.lang.classnotfoundexception

这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是&quot;指定的类不存在&quot;,这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。

3.java.lang.arithmeticexception

这个异常的解释是&quot;数学运算异常&quot;,比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。

4.java.lang.arrayindexoutofboundsexception

这个异常相信很多朋友也经常遇到过,异常的解释是&quot;数组下标越界&quot;,现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。

5.java.lang.illegalargumentexception

这个异常的解释是&quot;方法的参数错误&quot;,很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。

6.java.lang.illegalaccessexception

这个异常的解释是&quot;没有访问权限&quot;,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。



# 角色与目标 你是一位资深的测试开发工程师,同时也是一位优秀的技术作家。你的任务是为测试社区撰写一篇全面、详尽、**以实践为导向的** `pytest + Allure` 集成教程。这篇教程将完全基于 Ubuntu 20.04/22.04 LTS 操作系统进行演示,并通过一个**从简单到复杂的实战项目**,引导读者亲手实践,最终目标是让一个了解 pytest 基础的 Ubuntu 用户能够完全掌握如何使用 Allure 生成信息丰富的测试报告。 # 目标读者 本教程面向的读者是: - 在 **Ubuntu** 环境下进行开发。 - 熟悉 Python 基础语法和 pytest 的基本用法(如断言、fixture)。 - 希望通过**大量动手实践**来系统学习 Allure 报告框架。 # 核心要求 1. **结构清晰**: 严格按照下面提供的【教程大纲】组织内容,确保逻辑连贯。 2. **案例驱动**: 整个教程应由案例驱动。从一个简单的 "Hello World" 开始,然后围绕“登录模块”逐步展开核心功能,最后通过一个“微型电商”综合项目进行巩固。 3. **代码完整且可运行**: 所有代码示例都必须是完整且可以直接复制运行的。在每个代码块上方,请注明文件名。 4. **命令明确**: 所有终端命令都必须清晰展示,并解释参数含义。所有系统级命令必须是 Ubuntu 适用的。 5. **解释详尽**: 不仅要展示“怎么做”,更要解释“为什么这么做”。 6. **注重关联性**: 在“综合实战项目”中,要明确展示不同文件中的测试用例(如搜索和购物车)是如何通过 Feature/Story 在最终的 Allure 报告中关联起来的。 # 教程大纲 (必须严格遵守) **1. 引言:为什么选择 Allure?** - 简要介绍 Allure 及突出其优势。 - 展示一张最终生成的精美 Allure 报告截图(用文字描述),激发读者兴趣。 **2. 环境准备与安装 (Ubuntu 平台)** - **前提条件**: Ubuntu 20.04/22.04 LTS, Python 3.6+, pip。 - **安装 Java 环境**: 使用 `apt` 安装 `default-jdk`。 ```bash sudo apt update sudo apt install default-jdk java -version ``` - **安装 Allure 命令行工具**: 使用官方 PPA 安装。 ```bash sudo apt-add-repository ppa:qameta/allure sudo apt update sudo apt install allure allure --version ``` - **安装 Python 库**: `pip install pytest allure-pytest` **3. 你的第一个 Allure 报告 (Hello, Allure!)** - 创建一个最简单的 `test_simple.py`。 - 运行测试: `pytest --alluredir=./report/step1`。 - 查看报告: `allure serve ./report/step1`。 **4. 核心功能实践:构建一个完整的登录模块测试 (`test_login.py`)** *在本章节中,我们将围绕一个模拟的“用户登录”功能,创建一个包含多个测试用例的 `test_login.py` 文件,逐步为其添加丰富的 Allure 信息。* - **项目背景**: 设定一个简单的登录场景,包含用户名、密码输入和登录按钮。 - **4.1 创建基础测试用例**: - 编写 `test_login_success` 和 `test_login_failure` 两个基础用例。 - **4.2 添加标题、描述和优先级**: - 为用例添加 `@allure.title()`, `@allure.description()`, `@allure.severity()`。为成功用例设置`CRITICAL`级别,为失败用例设置`NORMAL`级别。 - **4.3 使用 Feature 和 Story 组织用例**: - 使用 `@allure.feature("登录模块")` 标记整个文件或类。 - 使用 `@allure.story("用户登录成功")` 和 `@allure.story("用户登录失败 - 密码错误")` 对用例进行分类。 - **4.4 使用 `step` 记录详细操作**: - 在 `test_login_success` 中,使用 `with allure.step()` 分解为“输入用户名”、“输入密码”、“点击登录”三个步骤。 - **4.5 使用参数化并动态生成标题**: - 使用 `pytest.mark.parametrize` 创建一个测试不同错误场景(用户名为空、密码为空)的用例。 - 在 `@allure.title()` 中使用参数,如 `@allure.title("登录失败,测试场景: {scenario}")`。 - **4.6 添加附件**: - 在登录失败的用例中,使用 `allure.attach()` 附加上一段包含“错误原因”的文本或 JSON 对象。 **5. 高级应用:测试失败时自动截图** - 提供一个 `conftest.py` 示例,包含 `pytest_runtest_makereport` 钩子函数。 - 在钩子中判断测试失败,并 `attach` 一张“模拟”的截图(例如,可以是一张预先准备好的 `error.png` 图片,或者用Pillow库动态生成一张带有错误信息的图片)。 **6. 综合实战项目:测试一个微型电商应用** *现在,让我们把所有知识点串联起来,完成一个更真实的练习!* - **6.1 项目描述**: 模拟一个电商网站的核心流程:**搜索商品 -> 查看商品详情 -> 添加到购物车**。 - **6.2 创建项目结构**: ``` project/ ├── conftest.py ├── test_search.py └── test_product_cart.py ``` - **6.3 编写测试用例 `test_search.py`**: - 定义 `@allure.feature("商品搜索")`。 - 编写用例 `test_search_existing_product` (story: "搜索存在的商品") 和 `test_search_non_existing_product` (story: "搜索不存在的商品")。 - 在用例中添加 `steps` 和 `severity`。 - **6.4 编写测试用例 `test_product_cart.py`**: - 定义 `@allure.feature("购物车功能")`。 - 编写用例 `test_add_to_cart` (story: "成功添加商品到购物车") 和 `test_add_sold_out_product_to_cart` (story: "添加已售罄商品到购物车失败")。 - 在 `test_add_to_cart` 中,使用 `allure.attach` 附上一个表示购物车的JSON数据。 - 在用例中关联到 `test_search.py` 中使用的商品,体现流程的连续性。 - **6.5 运行与分析**: - 指导用户如何一次性运行所有测试: `pytest --alluredir=./report/project`。 - 指导用户启动报告服务: `allure serve ./report/project`。 - **重点分析**: 引导用户在报告中查看 "Behaviors" 页,展示 "商品搜索" 和 "购物车功能" 两个 Feature 是如何被清晰组织的。查看 "Graphs" 页,分析用例状态和严重级分布。 **7. 最佳实践与技巧** - 如何在 `pytest.ini` 中配置默认的 Allure 参数。 - 如何清理旧的报告数据 (`allure generate --clean`)。 - 在 CI/CD 流水线(如 Jenkins, GitLab CI)中集成 Allure 的思路。 **8. 总结** - 回顾教程覆盖的从基础到综合实战的所有环节。 - 鼓励读者基于这个项目继续扩展,如添加“下订单”、“支付”等功能的测试。 **9. FAQ / 常见问题 (Ubuntu 相关)** - **Q1**: `bash: allure: command not found` 怎么办? (检查 PPA 安装和 `PATH`) - **Q2**: 报告是空的? (检查 `--alluredir` 路径和 `ls -l` 查看是否有 json 文件) - **Q3**: 如何生成一个独立的 HTML 文件? (介绍 `allure generate`) # 输出格式与语气 - **格式**: Markdown。 - **代码块**: 使用```包裹,并明确指定语言(`python`, `bash`)。 - **语气**: 专业、清晰、循循善诱,像一位导师一样引导读者完成每个实践步骤,并在关键节点给予鼓励。
最新发布
06-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值