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

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

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

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

Q&A

解決済

2回答

1554閲覧

エラー インスタンス String e

goforward

総合スコア705

Java

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

0グッド

0クリップ

投稿2017/04/02 11:28

編集2017/04/02 11:50

まずエラーの原因から
Exception in thread "main" java.lang.ArithmeticException: / by zero
at MyApp.div(MyApp.java:6)
at MyApp.main(MyApp.java:10)

java

1 2 3class MyException extends Exception { 4 public MyException(String s) { 5 super(s); 6 } 7} 8 9public class MyApp { 10 11 public static void div(int a, int b) { 12 try { 13 if (b < 0) { 14 throw new MyException("not minus!") 15 } 16 System.out.println(a / b); 17 } catch (ArithmeticException e) { 18 System.err.println(e.getMessage()); 19 } catch (MyException e) { 20 System.err.println(e.getMessage()); 21 } finally { 22 System.out.println("-- end --"); 23 24 } 25 26} 27 28 public static void main(String[] args) { 29 div(3, 0); 30 div(5, -2); 31 32 } 33 34 35}

インスタンス(変数)を投げていてメソッドではないのになぜ()がいるのか

java

1throw new MyException("not minus!")

string intなどのように小文字のイメージが強く、クラスの一文字は大文字で定数は全文字大文字だと習いましたが今回はなぜ一文字目が大文字でしょうか?
それとこのeはいったいなにものでしょうか?変数でしょうか?ほかに見当たらなく、いきなり出てきたのでerrorのeだと思いますが、定義されているのでしょうか?
型を指定するのにはじめは大文字になることはわかりました。よってeは変数である。

java

1ArithmeticException e 2e.getMessage

よろしくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

インスタンス(変数)を投げていてメソッドではないのになぜ()がいるのか

=>文法の理解不足のようです。
この文はthrow (new MyException("not minus!");と書いたときと同じなのですがMyException(...)の括弧はのコンストラクターへの引数を意味します。コンストラクターを呼び出して生成された例外クラスのインスタンスをthrowと解釈するのですね。構文的にどの部分が先に結び付くのかが読めるように学習&練習しましょう。

string intなどのように小文字のイメージが強く、クラスの一文字は大文字で定数は全文字大文字だと習いましたが今回はなぜ一文字目が大文字でしょうか?

まずは大文字小文字はあるがままに受け入れてください。intは全部小文字ですがStringは先頭大文字になります。これはjavaでのプリミティブ型と参照型の名前のちょっとした不整合と言えますがまずはそのままプリミティブ型は全部小文字、参照型の型名=クラス名は先頭が大文字(のことが多い)と覚えてください。

「いきなり出てきたのでerrorのe」

=>違います。単なる変数名です。

ご質問を拝見して、基本的な事項を教科書などでほとんど学ばない状態でご自分の推測を頼りにコードを読もうとしているような印象を受けます。推測することはわるくないのですが基礎が不十分な状態で不完全な推測をすることは遠回りになることが多いと思います。

プログラムを正しく解釈するためには基本は不可欠なので、javaの基本(文法など)を今少ししっかり教科書などで学ぶのが早道ではないかと思いました。

投稿2017/04/02 12:06

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goforward

2017/04/02 12:19

ご指摘ありがとうございます。そうさせていただきます
guest

0

ベストアンサー

メッセージは「0で割ってはいけません」という意味です。

インスタンス(変数)を投げていてメソッドではないのになぜ()がいるのか

これはインスタンス化するのにコンストラクタを呼んでいるからです。

なぜ一文字目が大文字でしょうか?

あなたがMyExceptionというクラスを作ったからです。また、クラス名や定数の大文字小文字は言語仕様ではなく、Javaプログラマ間でコードが読みやすくなるためのルールです。

このeはいったいなにものでしょうか?

eはどっかのthrowで発生した例外クラスのインスタンスです。

投稿2017/04/02 12:01

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問