質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

解決済

オブジェクト指向 別パッケージの例外処理の引き継ぎ

oimo0505
oimo0505

総合スコア20

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1回答

0リアクション

0クリップ

237閲覧

投稿2022/08/11 04:25

前提

javaで別パッケージのnull判定文に従ってtry-catchで例外処理を行いたいと考えています。
自作クラスなどについては、クラス名の前にパッケージ名をつけることで引き継ぐことができたのですが、catch文の部分だけ例外処理を引き継ぐことができなくて困っています。
先頭にimport文などを置くなどする必要があるのでしょうか?それともそもそも引き継ぐことはできずもう一度該当パッケージ内で例外処理の文を書き直す必要があるのでしょうか?
ご教授いただきたいです。コードが汚く理解しづらい点があると思いますがよろしくお願いします。

ディレクトリは下記の通りです。
Stage
・test1→Bond.java
・test2→BondTest.java

実現したいこと

  • パッケージtest1にあるコンストラクタBondのcodeの引数がnullの時、IllegalArgumentExceptionを用いてnull判定を行う処理をパッケージtest2のBondクラスのcatch処理に引き継ぐ

該当のソースコード

Java

package test1; import java.util.Objects; public class Bond { private String code; private String name; private int maturity; private double coupon; private String BondType; public Bond (String code, String name, int maturity, double coupon) { this.code = code; this.name = name; this.maturity = maturity; this.coupon = coupon; } //getter public String getCode() { return this.code; } public String getName() { return this.name; } public int getMaturity() { return this.maturity; } public double getCoupon() { return this.coupon; } public String getBondType() { if (coupon == 0) { BondType.equals("ZERO_COUPON_BOND"); } else { BondType.equals("COUPON_BOND"); } return this.BondType; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append(code); builder.append(name); builder.append(maturity); builder.append(coupon); builder.append(BondType); return builder.toString(); } //equalsメソッド @Override public boolean equals (Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } Bond other =(Bond)obj; if (this.code != other.code) { return false; } if (maturity == 0) { if (other.maturity != 0) { return false; } } else if (maturity != other.maturity) { return false; } if (Double.compare(other.coupon,coupon) != 0) { return false; } // チェック処理 if (code == null || name == null) { throw new IllegalArgumentException("nullです。"); } if (maturity < 20000101 || 29991231 < maturity || coupon < 0) { throw new IllegalArgumentException("数値が範囲外です"); } return true; } //hashCode @Override public int hashCode() { return Objects.hash(this.code, this.maturity, this.coupon); } } package test2; public class BondTest { public static void main (String [] args) { try { test1.Bond bond2 = new test1.Bond(null, "name", 20220810, 1); System.out.println(bond2); } catch (IllegalArgumentException e ) { System.out.println("入出力エラーです。"); } } }

試したこと

catchをtest1.IllegalArgumentExceptionとした場合シンボルが見つからずそもそもコンパイルができなかった。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

maisumakun

2022/08/11 04:58

現状の、単にIllegalArgumentExceptionと書いたコードではどのような問題が起きるのですか?
oimo0505

2022/08/11 05:05

maisumakun様 単に書いたコードを実行するとcodeがnullの場合もtry部分のbond2の出力が行われてしまいます。 nullの場合はIllegalArgumentExceptionが表示されるようにしたいです。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。