一般来说,Java编译器不会传播方法"总是"抛出异常的信息,因此不会检测到所有代码路径都是完整的.
(这是因为Java编译器独立编译每个类).
当你想写那样的东西时,这是一个问题.
public class ErrorContext {
public void fatalISE(String message) {
String context = "gather lots of information about the context of the error";
throw new IllegalStateException(context +": " + message);
}
}
public class A {
public MyObject myMethod() {
if (allIsGood()) {
return new MyObject();
}
ErrorContext.fatalISE("all is not good");
}
}
Run Code Online (Sandbox Code Playgroud)
(即,一种收集上下文信息的"断言助手").
因为编译器会抱怨myMethod并不总是返回MyObject.
据我所知,没有特定的注释来表明方法总是抛出.
示例:我有一个关系"class",有一个嵌套的学生包:
class: {teacher_name: chararray,students: {(firstname: chararray, lastname: chararray)}
Run Code Online (Sandbox Code Playgroud)
我想对每个学生进行操作,同时保持全局结构不受影响,即获得:
class: {teacher_name: chararray,students: {(fullname: chararray)}
Run Code Online (Sandbox Code Playgroud)
每个学生的位置,fullname = CONCAT(名字,姓氏)
我的理解是嵌套的FOREACH不是我的解决方案,因为它仍然只为每个输入元组生成1条记录,而我想要在每个包项目中应用的东西.
使用UDF非常容易,但想知道是否可以在纯粹的Piglatin中进行