Java语言代码出错的时候,要求进入一个页面,输出错误的原因,就像qq的那样的功能,怎么才能实现的呢
Java 中,可以使用异常处理机制来捕获并处理代码中的异常,并将错误信息显示在页面上。
示例代码如下 :
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
// 在这里编写可能出错的代码
int result = 100 / 0; // 除数为0,会抛出 ArithmeticException 异常
// ...
} catch (Exception e) {
// 捕获异常并输出错误信息
String errorMessage = e.getMessage();
request.setAttribute("errorMessage", errorMessage);
// 跳转到错误页面
request.getRequestDispatcher("/error.jsp").forward(request, response);
}
}
}
在错误页面中,可以使用<%= request.getAttribute("errorMessage") %>
的方式获取错误信息并输出到页面上。
需要注意的是,为了让异常处理机制生效,你需要确保你的代码在 Servlet 容器中运行,并且配置了正确的映射关系,以便 Servlet 可以被正确调用。
这里使用IDEA,首先创建一个 Maven 项目:
然后,就会出现一个工程目录。找到 pom.xml 这个文件,打开它,并在其中添加一段代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>e-mailSystem</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!--添加下面这段代码-->
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
</dependencies>
</project>
当代码添加完成之后,就可以编写自己的邮件发送工具类了。
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
/**
* 自定义发送邮件工具类
*/
public class SendMailTools {
/**
*
* @param toUser 收件邮箱
* @param fromUser 发件邮箱
* @param fromUserPassWord 发件邮箱的POP3/SMTP服务密码
* @param theme 邮件主题
* @param content 邮件内容
* @return 返回一个提示,是否发送成功(true/false)
*/
public static boolean sendMail(String toUser, String fromUser,
String fromUserPassWord, String theme,
String content){
//实例化邮件资源
SimpleEmail email = new SimpleEmail();
//设置qq邮件服务器的端口号
email.setSslSmtpPort("465");
//使用QQ邮箱的固定写法
email.setHostName("smtp.qq.com");
//设置发件人的账户和POP3/SMTP服务密码
email.setAuthentication(fromUser, fromUserPassWord);
//编码方式
email.setCharset("UTF-8");
try {
//收件人
email.addTo(toUser);
//发件人
email.setFrom(fromUser);
//邮件主题
email.setSubject(theme);
//邮件内容
email.setMsg(content);
//发送
email.send();
return true;
} catch (EmailException e) {
e.printStackTrace();
return false;
}
}
}
最后就是测试使用我们这个邮件工具类了。
import java.io.BufferedReader;
import java.io.FileReader;
/**
* 使用自定义邮件发送工具类实现群发消息
*/
public class Test {
public static void main(String[] args) {
String toFrom = "xxxxxxxxxx@qq.com"; //发件人
String toFromPassWord = "xxxxxxxxxxxxxxxx"; //发件人邮箱POP3/SMTP服务密码
String theme = "这是一封测试邮件"; //邮件主题
String content = "hello word!~~~"; //邮件具体内容
try(
FileReader fs = new FileReader("toUser.txt");//字符流,默认当前项目下的文本文件
BufferedReader br = new BufferedReader(fs); //字符装饰流
){
String ret = null;
//循环读取,每次读一行
while((ret = br.readLine())!=null){
//发送成功提示一下
if(SendMailTools.sendMail(ret,toFrom,toFromPassWord,theme,content)){
System.out.println("发送成功》》》");
}else{
System.out.println("失败!!!");
}
}
}catch (Exception e){
e.printStackTrace();
}
}
}
这里我使用的是从一个 txt 文本文件中读取收件人的邮箱,然后发送。发件人则是固定的。大家在写这个代码时,有兴趣的可以将发件人也使用文件的方式读取,更可以将主题和内容也使用文件读取后发送。
程序运行结果:
注意:由于我们这里使用的是QQ邮箱的服务区,所以在同一时间这里可能发送成功了,但是收件人有的可能会收不到,而想要避免这个Bug,两个方法:
1.在同一时间内发送邮件的数量尽量减少
2.使用自己的服务器或者是第三方的服务器
要在Java语言代码出错时实现类似QQ的功能,在页面上输出错误的原因,可以使用以下方法:
<!--发送邮件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
创建邮件工具类:创建一个名为MailUtil的工具类,用于发送邮件。可以参考段落10中的MailUtil类的代码实现。该类中的sendSimpleMail方法可以用来发送简单的文本邮件。
在发生异常的地方捕获异常并调用邮件发送:在Java代码中,需要在发生异常的地方添加try-catch块来捕获异常,然后调用邮件工具类的sendSimpleMail方法发送邮件。可以在catch块中编写以下代码:
try {
// 发生异常的代码
} catch (Exception e) {
// 发送邮件
MailUtil mailUtil = new MailUtil();
Mail mail = new Mail();
mail.setRecipient("bugbugbug@qq.com"); //设置收件人
mail.setSubject("代码错误通知"); //设置邮件主题
mail.setContent("发生错误的原因是:" + e.getMessage()); //设置邮件内容
mailUtil.sendSimpleMail(mail); //发送邮件
}
在上面的代码中,需要将收件人的邮箱地址替换成你的实际邮箱地址。
通过以上步骤,当代码发生异常时,会捕获到异常并发送邮件,邮件中包含了异常的原因。这样就实现了类似QQ的功能,在页面上输出错误的原因。
可以写个全局捕捉异常的方法进行相对应处理 具体实现可以百度 应该很多