首页 \ 问答 \ 错误的异常被抛出(Wrong exception being thrown)

错误的异常被抛出(Wrong exception being thrown)

我将字符串传递给此方法。 字符串是“44”。 然后我将它解析为一个int并执行if语句以查看它是否在1到12之间。然后转到我所拥有的else语句 - 抛出新的IllegalArgumentException(“非法月份数量:”+ inSetString);

由于某种原因,这不会被抛出,它会下降到下一个异常并抛出一个 - 抛出新的IllegalArgumentException(“无效的月份名称字符串:”+ inSetString);

为什么它抛出第二个异常语句而不是第一个异常语句? 它会转到else语句。 我通过使用--System.out.println(“除了”+ inSetString)测试了它;

这是我的代码:

 public void setMonthName(String inSetString)    
 {
         int i = 0;
         monthNumber = -1;

         try
         {
            System.out.println("first" + inSetString);
            i = Integer.parseInt(inSetString);
            System.out.println("next" + inSetString);
            if (i >= 1 && i <= 12)
            {
               monthNumber = i;
            }
            else
            {
                   System.out.println("except" + inSetString);
                throw new IllegalArgumentException("Illegal month number here: " + inSetString);
            }
         }
            catch (IllegalArgumentException e)
            {       

            }

      // if it gets to here we know it's a string
         for (int index = 0; index < monthNames.length; index++)
         {
            if (monthNames[index].equalsIgnoreCase(inSetString))
            {
               monthNumber = index;
            }
         }
         if (monthNumber == -1)
         {
            throw new IllegalArgumentException("Invalid month name string: " + inSetString);
         }
      }

I'm passing in a string to this method. The string is "44". I then parse it into an int and do an if statement to see if it's between 1 and 12. It then goes to the else statement where I have - throw new IllegalArgumentException("Illegal month number here: " + inSetString);

For some reason, that doesn't get thrown and it goes down to the next exception and that one is thrown - throw new IllegalArgumentException("Invalid month name string: " + inSetString);

Why does it throw the second exception statement but not the first? It DOES go to the else statement. I've tested that by using - System.out.println("except" + inSetString);

Here's my code:

 public void setMonthName(String inSetString)    
 {
         int i = 0;
         monthNumber = -1;

         try
         {
            System.out.println("first" + inSetString);
            i = Integer.parseInt(inSetString);
            System.out.println("next" + inSetString);
            if (i >= 1 && i <= 12)
            {
               monthNumber = i;
            }
            else
            {
                   System.out.println("except" + inSetString);
                throw new IllegalArgumentException("Illegal month number here: " + inSetString);
            }
         }
            catch (IllegalArgumentException e)
            {       

            }

      // if it gets to here we know it's a string
         for (int index = 0; index < monthNames.length; index++)
         {
            if (monthNames[index].equalsIgnoreCase(inSetString))
            {
               monthNumber = index;
            }
         }
         if (monthNumber == -1)
         {
            throw new IllegalArgumentException("Invalid month name string: " + inSetString);
         }
      }

原文:https://stackoverflow.com/questions/9355476
更新时间:2023-10-27 20:10

最满意答案

您应该可以使用扩展Ninject.Extensions.ContextPreservation 。 特别是扩展方法IContext.ContextPreservingGet(...)

var connector = context.ContextPreservingGet<IInternalConnector>();

但是,我个人认为创建特定的设置类型是更好的选择 - 因为它是更简单的想法。


You should be able to use the extension Ninject.Extensions.ContextPreservation. Specifically the extension method IContext.ContextPreservingGet(...):

var connector = context.ContextPreservingGet<IInternalConnector>();

However, personally I think that creating specific settings types is the better choice - because it's the simpler idea.

相关问答

更多

相关文章

更多

最新问答

更多
  • h2元素推动其他h2和div。(h2 element pushing other h2 and div down. two divs, two headers, and they're wrapped within a parent div)
  • 创建一个功能(Create a function)
  • 我投了份简历,是电脑编程方面的学徒,面试时说要培训三个月,前面
  • PDO语句不显示获取的结果(PDOstatement not displaying fetched results)
  • Qt冻结循环的原因?(Qt freezing cause of the loop?)
  • TableView重复youtube-api结果(TableView Repeating youtube-api result)
  • 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
  • SQL Server 2014版本支持的最大数据库数(Maximum number of databases supported by SQL Server 2014 editions)
  • 我如何获得DynamicJasper 3.1.2(或更高版本)的Maven仓库?(How do I get the maven repository for DynamicJasper 3.1.2 (or higher)?)
  • 以编程方式创建UITableView(Creating a UITableView Programmatically)
  • 如何打破按钮上的生命周期循环(How to break do-while loop on button)
  • C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
  • 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
  • 如何防止调用冗余函数的postgres视图(how to prevent postgres views calling redundant functions)
  • Sql Server在欧洲获取当前日期时间(Sql Server get current date time in Europe)
  • 设置kotlin扩展名(Setting a kotlin extension)
  • 如何并排放置两个元件?(How to position two elements side by side?)
  • 如何在vim中启用python3?(How to enable python3 in vim?)
  • 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
  • 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
  • Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
  • dedecms如何安装?
  • 在哪儿学计算机最好?
  • 学php哪个的书 最好,本人菜鸟
  • 触摸时不要突出显示表格视图行(Do not highlight table view row when touched)
  • 如何覆盖错误堆栈getter(How to override Error stack getter)
  • 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
  • USSD INTERFACE - > java web应用程序通信(USSD INTERFACE -> java web app communication)
  • 电脑高中毕业学习去哪里培训
  • 正则表达式验证SMTP响应(Regex to validate SMTP Responses)