gpt4 book ai didi

java - NumberFormatException 未在 try/catch 中被捕获

转载 作者:搜寻专家 更新时间:2023-10-31 20:14:13 24 4
gpt4 key购买 nike

我在创建 .jsp 页面时遇到问题。对于那些担心的人,该网站是用于家庭作业的,但是,我正在努力超越要求,并且不要求任何与评分相关的事情。这完全是为了我自己的利益。

言归正传:我从用户那里得到一个输入,执行 method="post"并刷新页面,在理想情况下它可以工作(这是作业。)但是,我正在尝试在这种情况下制作一个 try/catch block 用户在 int 字段中输入字符串。

int Svolt = 0;
double Amperes = 0.0;
double LEDdrop = 0.0;

if (request.getParameter("Svolt") != null) {
try {
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch ( NumberFormatException e ) {
%>
<script type ="text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
}

我尝试将“NumberFormatException”切换为“Exception”,但它返回了相同的错误代码。早些时候,我让 try catch 出现在 if() 语句之前,它起作用了,但没有显示我想要的警告框。

代码如下:

final double MA_TO_A = 0.001;
int Svolt = 0;
double Amperes = 0.0;
double LEDdrop = 0.0;

try {
if (request.getParameter("Svolt") != null) {
try {
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch (Exception e)
{
%>
<script type ="text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
}
Amperes = Double.parseDouble(request.getParameter("Amperes"));
LEDdrop = Double.parseDouble(request.getParameter("LEDdrop"));

out.println("Ideal resistance is: " + ((Svolt - LEDdrop) / (Amperes * MA_TO_A)) + " Ohms.");
}
} catch (Exception e) {
out.println("Please make sure your inputs are correct.");
}

感谢您的帮助,也感谢您的宝贵时间。非常感谢!

编辑:抱歉,本意是复制粘贴错误代码:

org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "a"

测试输入是字符串“a”

编辑2:备份/编辑/测试@Nambari 的建议

final double MA_TO_A = 0.001;
int Svolt = 0;
double Amperes = 20.0;
double LEDdrop = 1.8;

try {
if (request.getParameter("Svolt") != null) {
try {
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch (Exception e)
{
%>
<script type ="text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
}
out.println("Ideal resistance is: " + ((Svolt - LEDdrop) / (Amperes * MA_TO_A)) + " Ohms.");
}
} catch (Exception e) {
out.println("Please make sure your inputs are correct.");
}

输出:理想电阻是:-90.0 欧姆

警告框说(“源电压必须是整数。请解决这个问题。”)

没有错误代码。

没有 out.println 说(“请确保您的输入正确”)。

最终编辑:

代码现在几乎可以按预期运行,但已经足够好了。

                    final double MA_TO_A = 0.001;
int Svolt;
double Amperes;
double LEDdrop;

if (request.getParameter("Svolt") != null)
{
try
{

try
{
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch (Exception e)
{
%>
<script type ="text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
Svolt = 0;
}
try
{
Amperes = Double.parseDouble(request.getParameter("Amperes"));
} catch (Exception e)
{
%>
<script type = "text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
Amperes = 0.0;
}
try
{
LEDdrop = Double.parseDouble(request.getParameter("LEDdrop"));
} catch (Exception e)
{
%>
<script type = "text/javascript">
alert("The source voltage must be an integer. Please fix this.");
</script>
<%
LEDdrop = 0.0;
}
out.println("Ideal resistance is: " + ((Svolt - LEDdrop) / (Amperes * MA_TO_A)) + " Ohms.");
} catch (Exception e)
{
out.println("Please make sure your inputs are correct.");
}
}

很多行话,我知道,但这就是最终结果。不知何故,这一切都有效。感谢所有提供帮助的人!

最佳答案

首先,不建议在java servlet页面中嵌入java代码,你应该只关心jsp中的表现层,没有业务逻辑,你需要一个servlet来接受http请求,做你的逻辑,将结果放在响应中,然后重定向到 jsp。

另一方面,JSP 页面抛出的异常类型是 org.apache.jasper.JasperException,而不是 NumberFormatException,apache jasper JSP 引擎正在捕获数字格式异常,并向 Tomcat 抛出 JasperException。

此外,清除您的 tomcat 缓存以确保您的 JSP 部署到最新版本,为此,请删除以下文件夹和文件(包括 war):
{tomcat 安装路径}\work\Catalina\localhost(你的应用)
{tomcat 安装路径}\webapps(你的应用)

如果您捕捉到通用的 java.lang.Exception,它应该可以工作。

也试试这个:


    final double MA_TO_A = 0.001;
int Svolt = 0;
double Amperes = 0.0;
double LEDdrop = 0.0;
try {
if (request.getParameter("Svolt") != null) {
try {
Svolt = Integer.parseInt(request.getParameter("Svolt"));
} catch (Exception e)
{
//Changed to avoid the message if no exception, or for some other reason it fails to execute the conditions
out.println("<script type =\"text/javascript\">")
out.println("alert(\"The source voltage must be an integer. Please fix this.\");") ;
out.println("</script>")
}
Amperes = Double.parseDouble(request.getParameter("Amperes"));
LEDdrop = Double.parseDouble(request.getParameter("LEDdrop"));

out.println("Ideal resistance is: " + ((Svolt - LEDdrop) / (Amperes * MA_TO_A)) + " Ohms.");
}
} catch (Exception e) {
out.println("Please make sure your inputs are correct.");
}

关于java - NumberFormatException 未在 try/catch 中被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com