据我所知,以下代码片段应该可以正常执行.Stream("A", "").toIterable.map(_.head)抛出异常,应该被try块捕获.
import org.scalatest.FunSuite
class TryCatchTest extends FunSuite {
test("Try failure") {
List(1).flatMap {
_ =>
try {
Stream("A", "").toIterable.map(_.head)
} catch {
case e: Throwable => Nil
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,崩溃时出现以下错误:
next on empty iterator
java.util.NoSuchElementException: next on empty iterator
at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
at scala.collection.IndexedSeqLike$Elements.next(IndexedSeqLike.scala:63)
at scala.collection.IterableLike$class.head(IterableLike.scala:107)
at scala.collection.immutable.StringOps.scala$collection$IndexedSeqOptimized$$super$head(StringOps.scala:30)
at scala.collection.IndexedSeqOptimized$class.head(IndexedSeqOptimized.scala:126)
at scala.collection.immutable.StringOps.head(StringOps.scala:30)
at TryCatchTest$$anonfun$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$1.apply(TryCatchTest.scala:8)
at TryCatchTest$$anonfun$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$1.apply(TryCatchTest.scala:8)
at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:418)
at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:418)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1222)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1212)
at scala.collection.immutable.Stream.foreach(Stream.scala:595)
at scala.collection.immutable.List.flatMap(List.scala:327)
at TryCatchTest$$anonfun$1.apply$mcV$sp(TryCatchTest.scala:5)
at TryCatchTest$$anonfun$1.apply(TryCatchTest.scala:5) …Run Code Online (Sandbox Code Playgroud) 我有一个查询,它根据 Order_ID 从数据库中获取一些文件名。许多文件可能与一个订单相关联。查询看起来像
$download2 = xtc_db_query("SELECT orders_products_filename FROM orders_products_download WHERE orders_id='".$last_order."'");
while ($activated2 = xtc_db_fetch_array($download2))
{
$file = $activated2['orders_products_filename'];
$pieces = explode(".zip", $file);
print_r ($pieces);
if(file_exists($pieces.'.zip'))
{ echo "1"; }
if(!file_exists($pieces.'.zip'))
{ echo "2"; }
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是如果文件存在或不存在则触发一个操作。As $piecesis an arrayfile_exists假设整个数组是一个文件,并且它不起作用(它总是回显 2)。如果有人给我提示如何解决这个问题,那就太好了。