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

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

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

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

Q&A

解決済

3回答

7482閲覧

コンパイルエラーと例外の判断の仕方が知りたい

k499778

総合スコア599

Java

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

0グッド

1クリップ

投稿2017/04/24 11:38

現在Java Goldの資格勉強をしています。
その問題の中ではよく選択肢として、
・コンパイルエラーが発生する
・実行時に例外が発生する
といったものがあります。

しかしよくどちらか迷うことが多いです。
そこでわかりやすい見分け方やコツなどがあれば教えていただきたいです。

コンパイルエラーが「文法のエラー」、
実行時例外が「実際に動かしてみたときのエラー」ということはわかります。
しかしまだ迷います。もう少し決め手やポイントはないでしょうか?

例えば以下の問題、私は引数が足りていないから文法のエラーかと思いましたが、実行時例外でした。
class App{
public static void main(String[]){
String str1 = "Duke";
String str2 = str1.replace('u','a');
System.out.printf(”%2$s %3$s %1$s ”,str1,str2);
}
}

こういったように迷いがちです。
アドバイス頂けると有難いです。よろしくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

これを「引数が足りない」と判断できるのは、我々がprintfの仕様を知っているからです。
文字列の中で % で始まるところがプレースホルダであり、これを見つけるたびに可変長引数から一つずつ読み取る、という仕様をです。

ところがprintfメソッドの外形的な仕様、「シグネチャ」として定義されているのは「最初にString、あとはObject型を0個以上」とだけです。コンパイル時に判定できるのはこのシグネチャに合っているかどうかだけですから、通過するわけです。

我々と同程度にprintfの仕様を理解して静的に間違いを指摘してくれるようなツールも存在します。そうしたツールはlintと総称されます。

投稿2017/04/24 12:41

yuba

総合スコア5568

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

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

0

実際にたくさんコンパイルエラーを起こしたり、実行時エラーを起こして、感覚を養うくらいしか思いつきません。

例で挙げられた、書式付き出力は、色々な言語でコンパイル時に検知できるような工夫がされたり、されなかったりしており、結構難しいです。

投稿2017/04/24 12:04

koko_u

総合スコア936

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

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

0

上で出されていた例の場合では、確か最後の引数は可変長引数として定義されているため、コンパイル時にはまだ引数の数が確定していないのだと思います

投稿2017/04/24 11:53

Kakky7s

総合スコア122

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問